当前位置 博文首页 > 文章内容

    javascript function前面的符号!~-

    作者: 栏目:未分类 时间:2020-07-18 16:00:55

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    经常会遇到这种函数写法:

    !function() {do something...}()
    ~function(){do something...}()
    

    js中可以这样创建一个匿名函数:

    (function(){do something...})()
    //或
    (function(){do something...}())
    

    匿名函数后面的小括号()是为了让匿名函数立即执行。

    那为什么这么写就会报错呢:
    function(){alert(1)}() // Uncaught SyntaxError: Unexpected token

    因为function前面没有(或者! ~之类的运算符,js解析器会试图将关键字function解析成函数声明语句,而不是函数定义表达式!
    作为组运算符,小括号()会将其内部的表达式当成一个整体,然后返回结果,所以定义一个匿名函数正确的格式就是用小括号将函数体括起来!

    同样的! ~ + -等运算符也有同样的效果,这是因为匿名函数也是一种值,这些运算符会将后面的函数体当成一个整体,先对匿名函数进行求值,然后在对结果进行运算!