js中function 與 的區別

2021-09-10 02:57:17 字數 739 閱讀 5050

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

我們看一下下面的例子:

function test() , 500);};}

var obj = new test();

obj.func();

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

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

function test() , 500);};}

var obj = new test();

obj.func();

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

如下:function test() , 500);};}

var obj = new test();

obj.func();

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

function 與 的區別

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

VBS中Sub與Function的區別

在vbscript中,有兩種procedure sub procedure與function procedure。一 sub procedures vbscript的sub procedure以sub開始,以end sub結束,中間是vbscript語句。sub procedure完成一系列的動作,...

js 中的Function型別

函式的建立有兩種方式 二者基本等價,除了 什麼時候可通過變數訪問函式的區別,以下將舉例證明。以函式宣告的方式來建立,那麼不論在什麼時候訪問函式,都是正確的,因為解析器有函式宣告提公升。sayhello function sayhello 以函式表示式方式來建立,那麼只能在建立之後才能訪問。sayhe...