混淆自动运行功能

Confusion about auto-run functions

本文关键字:运行 功能      更新时间:2023-09-26

我知道什么是自动运行函数,我经常在Node.js和简单的JavaScript中使用它们。但有些事我还是不明白。

我有点知道为什么下面的工作

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

但我真的不知道为什么下面的工作…

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

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

…但这也可以…

!function () {/* Stuff */}(); // The "!" can be any valid expression

我可以得到一个详细的解释吗?

如果是javascript

(function () {console.log("hi");})();

这是一个可立即调用的函数表达式,意思是定义后再调用,所以它被立即调用,它工作

function () {console.log("hi")}();

这将抛出一个错误,因为定义后面跟着大括号,如果你想调用它,就把它设为IIFE

!function () {console.log("hi")}();

这是因为,如果在函数声明前放置一元操作符,则不需要添加闭括号,并且它会删除代码中的一个字符。

希望有所帮助