對於非匿名的當即執行函數須要注意如下一點函數
let foo = 1 (function foo() { foo = 10 console.log(foo) }()) //-> ƒ foo() { foo = 10 ; console.log(foo) }
由於當 JS 解釋器在遇到非匿名的當即執行函數時,會建立一個輔助的特定對象,而後將函數名稱做爲這個對象的屬性,所以函數內部才能夠訪問到 foo,可是這又個值是隻讀的,因此對它的賦值並不生效,因此打印的結果仍是這個函數,而且外部的值也沒有發生更改。code