函式宣告方式
function fn () {
}
let fn = function () {
}
function () {
}
(function () {
}())
複製程式碼
此處講的是立即執行函式的原理,所謂立即執行函式是被定義的時候就立即執行,而在Javascript中能立即被執行的只有表示式,普通函式被定義不會立即執行,等待被呼叫,而加上數學運算子 () 括號之後,會將函式宣告轉換成表示式,使函式能夠被直接執行,並且執行後函式的執行上下文被銷燬。
函式不僅能夠被括號轉換成表示式,還能夠被其他一些數學運算子轉換成表示式,從而能夠被立即執行
!function () {
console.log('立即執行')
}()
+function () {
console.log('立即執行')
}()
-function () {
console.log('立即執行')
}()
+function () {
console.log('立即執行')
}()
~function () {
console.log('立即執行')
}()
複製程式碼
值得一提的是,立即執行函式之後,其他變數引用不到該函式,因為引用的是表示式返回的結果
var fn = (function () { console.log('立即執行')}())
print:'立即執行'
console.log(fn) // undefined
var fn = !function () { console.log('立即執行')}()
print:'立即執行'
console.log(fn) // true
複製程式碼