js立即執行函式原理

兩情迢迢發表於2019-01-26

函式宣告方式

function fn () { // 函式宣告
    // ...
}
let fn = function () { // 函式引用
    // ...
}

function () { // 匿名函式
    // ...
}

(function () { // 立即執行函式
   // ...
}())

複製程式碼


此處講的是立即執行函式的原理,所謂立即執行函式是被定義的時候就立即執行,而在Javascript中能立即被執行的只有表示式,普通函式被定義不會立即執行,等待被呼叫,而加上數學運算子 () 括號之後,會將函式宣告轉換成表示式,使函式能夠被直接執行,並且執行後函式的執行上下文被銷燬。


函式不僅能夠被括號轉換成表示式,還能夠被其他一些數學運算子轉換成表示式,從而能夠被立即執行

!function () {
    console.log('立即執行')
}()
// print: '立即執行'

+function () {
    console.log('立即執行')
}()
// print: '立即執行'

-function () {
    console.log('立即執行')
}()
// print: '立即執行'

+function () {
    console.log('立即執行')
}()
// print: '立即執行'

~function () {
    console.log('立即執行')
}()
// print: '立即執行'複製程式碼


值得一提的是,立即執行函式之後,其他變數引用不到該函式,因為引用的是表示式返回的結果

var fn = (function () {  console.log('立即執行')}())
print'立即執行'
console.log(fn) // undefined


var fn = !function () {  console.log('立即執行')}()

print'立即執行'
console.log(fn) // true

複製程式碼


相關文章