function 與 的區別

2021-08-17 21:50:00 字數 794 閱讀 1677

在js中,箭頭函式並不是簡單的function(){}匿名函式的簡寫語法糖,實際上,箭頭函式和匿名函式有個明顯的區別:箭頭函式內部的this是詞法作用域,在編寫函式時就已經確定了。而匿名函式的this指向執行時實際呼叫該方法的物件,無法在編寫函式時確定。

我們看一下下面的例子:

function

test() , 500);9};

10}1112

var obj = new

test();

13 obj.func();

這裡的方法裡呼叫了settimeout函式,該函式500毫秒後呼叫我們定義的函式時,實際上是window物件呼叫的,所以這時匿名函式的this是指向window而不是指向obj了。

在箭頭函式出現之前一般都是這麼寫的:

function

test() , 500);

10};11}

1213

var obj = new

test();

14 obj.func();

這是利用了閉包的概念。箭頭函式可以看做這種方式的語法糖。

如下:

function

test() , 500);9};

10}1112

var obj = new

test();

13 obj.func();

箭頭函式除了傳入的引數之外,其它的物件都沒有!在箭頭函式引用了this、arguments或者引數之外的變數,那它們一定不是箭頭函式本身包含的,而是從父級作用域繼承的。

天道酬勤,功不唐捐!

sub 與 function 的區別

sub稱為過程,function稱為函式,他們之間的唯一區別是function有返回值。完全可以把sub寫成function,只要不用function的返回值就可以了。c語言就只有函式而沒有過程,因此一般情況下都可以用function來代替sub。但這兩段 對於excel的執行位置不同。sub會出現...

js中function 與 的區別

在js中,箭頭函式並不是簡單的function 匿名函式的簡寫語法糖,實際上,箭頭函式和匿名函式有個明顯的區別 箭頭函式內部的this是詞法作用域,在編寫函式時就已經確定了。而匿名函式的this指向執行時實際呼叫該方法的物件,無法在編寫函式時確定。我們看一下下面的例子 function test 5...

箭頭函式與function的區別

1.箭頭函式與function定義函式的寫法不同 function function fn a,b arrow function var foo a,b 2.this的指向不同 使用function定義的函式,this的指向隨著呼叫環境的變化而變化的,而箭頭函式中的this指向是固定不變的,一直指向...