Js | 立即执行函数function(){}()

本文详细阐述了JavaScript中函数声明与函数表达式的区别,包括它们的调用方式、执行时机及作用域特性。通过实例对比,展示了两者在代码执行过程中的不同行为,帮助读者深入理解JavaScript函数的两种定义方式。

函数声明与函数表达式区别

    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("我是需要在一个区域内才能运行")
        })() //我是需要在一个区域内才能运行
    }
复制代码

转载于:https://juejin.im/post/5c60428f51882562851b27c2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值