Javascript中的功能是什么意思?

这个问题在这里已经有了答案:

  • 该功能之前感叹号做了什么? 9个答案

  • 它是自我调用匿名函数的简写或替代方法:

    (function(){
      // code
    })();
    

    可以写成:

    !function(){
      // code
    }();
    

    你也可以用+代替!

    如果你只是做了:

    function(){
      // code
    }();
    

    这会产生问题,这就是为什么你需要添加! 在将函数声明转换为函数表达式之前

    引用文档第12.4节:

    ExpressionStatement不能以function关键字开头,因为这可能会使其与FunctionDeclaration模糊不清。

    为了更好地理解这个概念,你应该检查:

  • 函数声明与函数表达式

  • 他们否定结果,而不是函数本身:

    !function( x ){ return x }( true );
    !true
    false
    

    实际上,它是一种稍微压缩的形式:

    (function(){}())
    

    因为它需要少一个字符。 它需要的原因是你不能直接调用函数声明,例如这是无效的:

    function(){}()
    

    但添加! 在开始时将其转换为函数expression并使其工作。


    它通常用于解决JavaScript语法中的一个怪癖。 这给出了一个语法错误:

    function() {
    }();
    

    它被读作函数声明(如function foo () {} ),而不是函数表达式。 所以加入! 在它之前或用圆括号包装它,迫使解析器理解它是一个表达式。

    链接地址: http://www.djcxy.com/p/17421.html

    上一篇: what does !function in Javascript mean?

    下一篇: How exactly does !function(){}() work?