gpt4 book ai didi

javascript - 用于全局消减的匿名 JavaScript 函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:38:52 25 4
gpt4 key购买 nike

我遇到过一些我不理解的奇怪的 JavaScript 语法。

我试图使用单个匿名全局函数来进行全局消减,如下所示:

<script type="text/javascript">
function() {
alert("all code goes here");
}();
</script>

不幸的是,我遇到了语法错误。这修复了它:

<script type="text/javascript">
var MAIN = function() {
alert("all code goes here");
}();
</script>

但并不令人满意,因为现在有一个全局 MAIN 对象。然后我遇到了这个:

<script type="text/javascript">
(function() {
alert("all code goes here");
})();
</script>

我的一个同事看到了这个,摇了摇头说“这就是一些语法人”。

这是怎么回事

var x = function() { .. }();

需要括号而不像这样的变量

(function() { ... })();

编辑:与另一个问题相同,这个很棒 answer .

最佳答案

问题是 function() {}() 被解析为 函数声明。在函数声明中,函数名称是强制性的,因此由于此处缺少它,您会收到语法错误。在 function() {}() 周围放置括号通过强制将内部代码解析为表达式来解决问题:括号充当分组运算符,在只有一个表达式是有效的。

function() {}() 放在赋值的右侧也有类似的原因:只有表达式在那里有效,因此函数被解析为表达式。

这是一个简短的解释。如果您想要更长的版本,我建议您阅读 CMS's excellent explanation in another question .

关于javascript - 用于全局消减的匿名 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4070138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com