函式宣告、函式表示式、立即執行函式、你不知道的javascript
阿新 • • 發佈:2018-12-03
#你不知道的javascript上卷(2)#
1、函式宣告、函式表示式
// 例子一 函式宣告
function foo () {
var a = 3
console.log(a) // 3
}
foo ()
// 例子二 函式表示式
(function foo () {
var a = 3
console.log(a)
})()
函式宣告和函式表示式之間最重要的區別是:他們之間的識別符號會繫結在何處
第一個片段中foo被繫結在所在作用域中,可以通過foo()來呼叫它
第二個片段中foo被繫結在函式表示式自身的函式中而不是所在作用域中
即:(function foo() {...})作為函式表示式意味著foo只能在...所代表的的位置中被訪問,外部則不行。foo變數名被隱藏在自身中意味著不會非必要地汙染愛外部作用域
2、匿名錶達式
setTimeout ( function() {
console.log(I wait 1 second)
}, 1000)
匿名錶達式:因為函式function()...沒有識別符號,函式表示式可以是匿名的,但是函式宣告不能是匿名,在javascript中函式宣告要是匿名的話會報錯
3、具名錶達式
(function foo () {
var a = 3
console.log( a ) //3
})()
(function foo() { })() 立即執行函式表示式 第一個()把函式變成了表示式, 第二個()執行了這個函式