声明函数的目的是什么!函数(){code}();

What is the purpose of declaring a function like !function(){ code }();

本文关键字:函数 code 是什么 声明      更新时间:2023-09-26

声明以下函数的目的是什么:

!function(){ code }();

为什么选择!

它告诉解释器后面的函数关键字是函数表达式的一部分,而不是声明。这允许函数立即执行,创建一个名称空间的封装模块。

更常见的方法是用parens包装函数关键字和正文。这有时被称为"IIFE"或模块模式。

在JavaScript中,您可以一次性声明和执行一个函数,但这样做:

function() { /* ... */ }();

是语法错误。

您可以通过强制解析器将函数声明识别为表达式的一部分,而不是语句:来实现它

(function() { /* ... */ }());

您看到的是另一种执行此操作的方法,即使用!运算符。它将否定函数的结果,但在这里,该结果(如果有)无论如何都会被忽略。

!function() { /* ... */ }();

换句话说,这有点像黑客。


进一步阅读:

  • https://en.wikipedia.org/wiki/Immediately-invoked_function_expression
  • http://benalman.com/news/2010/11/immediately-invoked-function-expression/