在js中,箭頭函式並不是簡單的function(){}匿名函式的簡寫語法糖,實際上,箭頭函式和匿名函式有個明顯的區別:箭頭函式內部的this是詞法作用域,在編寫函式時就已經確定了。而匿名函式的this指向執行時實際呼叫該方法的物件,無法在編寫函式時確定。
我們看一下下面的例子:
function這裡的方法裡呼叫了settimeout函式,該函式500毫秒後呼叫我們定義的函式時,實際上是window物件呼叫的,所以這時匿名函式的this是指向window而不是指向obj了。test() , 500);9};
10}1112
var obj = new
test();
13 obj.func();
在箭頭函式出現之前一般都是這麼寫的:
function這是利用了閉包的概念。箭頭函式可以看做這種方式的語法糖。test() , 500);
10};11}
1213
var obj = new
test();
14 obj.func();
如下:
functiontest() , 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指向是固定不變的,一直指向...