zoukankan      html  css  js  c++  java
  • javascript function前面的符号!~-

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

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

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

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

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

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

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

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

  • 相关阅读:
    密码学与安全技术
    分布式系统核心问题
    虚拟机性能监控与故障处理工具
    垃圾收集器与内存分配策略
    Channel
    Buffer
    Reactor
    I/O简介
    HashMap
    装饰者模式
  • 原文地址:https://www.cnblogs.com/amize/p/13336048.html
Copyright © 2011-2022 走看看