代碼如下:
var b = function test(a,b){
console.log(a+b)
return a + b
}(1,3) ; // 4
console.log(test(1,3));
問題如下:
1、 console.log(test(1,3)) 為什么會 運行失敗
2、var b = function test(a,b){}此處的 test 是函式定義 還是函式運算式?
uj5u.com熱心網友回復:
test不是函式定義,相當于臨時函式物件(或函式指標)相當于
var b = ((a,b)=>{ //和lambda運算式等效,所以test沒有意義,不能使用test
console.log(a+b)
return a+b
})(1,3);
uj5u.com熱心網友回復:
test是一個函式運算式,并且是一個自執行函式,當你賦值的時候,這個函式就已經執行了,自執行函式一旦執行之后就不存在了,找不到了,test函式名不起作用,并且此時的變數b已經就是自執行函式的回傳值,為4uj5u.com熱心網友回復:
當function關鍵字不是出現在行首,它就是一條“函式運算式”,如果函式運算式寫了函式名,這個函式名是作為這個函式內的區域變數。只能在這個函式內訪問,不能在這個函式外訪問,一般只用于方便函式的遞回呼叫。轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/162282.html
標籤:JavaScript
