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("我是须要在一个区域内才能运行")
        })() //我是须要在一个区域内才能运行
    }
复制代码
相关文章
相关标签/搜索