javascript - 函数前面的感叹号有什么作用?

标签 javascript function

我找到了这段代码:

!function () {}();

这里感叹号的作用是什么?

最佳答案

JavaScript 语法 101:这是一个函数声明:

function foo() {}

请注意,没有分号;这只是一个函数声明。您需要调用 foo() ,实际运行该函数。

现在,当我们添加看似无害的感叹号时:!function foo() {}它将它变成一个表达式。它现在是一个函数表达式

!当然,单独并不能调用该函数,但我们现在可以输入 ()最后:!function foo() {}() ,其优先级高于 !并立即调用该函数。

function foo() {}()将是一个语法错误,因为您不能将参数( () )放在函数声明之后。

所以作者所做的就是为每个函数表达式保存一个字节;一种更具可读性的编写方式是这样的:

(function(){})();

最后,!使表达式根据函数的返回值返回 bool 值。通常,立即调用的函数表达式 (IIFE) 不会显式返回任何内容,因此其返回值为 undefined ,这给我们留下 !undefined这是 true 。未使用此 bool 值。

关于javascript - 函数前面的感叹号有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28891106/

相关文章:

javascript - "$"未定义; jquery 明确链接到 <head> 中;没有冲突的脚本或库

c++ - 具有多个模板定义的库

python - 将函数输入的默认值设置为等于 Python 中的另一个输入

c - typedef int function(void*) 是什么意思?

java - 使用 Guava 高效地转换通用数组

xcode - 当我在 Swift 中声明它时,为什么需要传递这个结构的变量?

javascript - Node.js - 使用请求在 for 循环中发送多个 HTTP GET

javascript - 如何不间断地连续播放声音?

javascript - 使用 chart.js 混合图表散点图

javascript - NodeJS 从哪里开始?