Js | 當即執行函數function(){}()

函數聲明與函數表達式區別

setFn(); //函數聲明成功
    function setFn(){
        console.log("函數聲明成功");
    }

    setfun(); //報錯:Uncaught TypeError: setfun is not a function
    var setfun = function(){
        console.log("函數表達式成功");
    }
複製代碼

函數表達式可直接在函數後加括號調用

var Obj2 = function(){
        console.log("這屬於立刻執行");
    }() //這屬於立刻執行
    
    
    //雖然匿名函數屬於函數表達式,但未進行賦值,因此javascript解析時將開頭的function當作函數聲明,故報錯提示須要函數名
    // function(){

    // }()
複製代碼

!!! var setFn = function() {}()能夠理解爲在匿名函數前加了 = 運算符後,將函數聲明轉化爲函數表達式,因此拿!,+,-,()...等運算符來測試下是否如此

!function(){
        console.log("!這個運算符是能夠的");
    }() //!這個運算符是能夠的

    +function(){
        console.log("+這個也是能夠的");
    }() //+這個也是能夠的

    -function(){
        console.log("-這個固然也能夠");
    }() //-這個固然也能夠

    ~function(){
        console.log("哇!~這個也能夠");
    }() //哇!~這個也能夠
    
    (function(){
    console.log(4)
    })() //報錯:TypeError: (intermediate value)(...) is not a function
    
    {
        (function () {
            console.log("我是須要在一個區域內才能運行")
        })() //我是須要在一個區域內才能運行
    }
複製代碼
相關文章
相關標籤/搜索