gpt4 book ai didi

javascript - 缺少分号意外中断脚本

转载 作者:行者123 更新时间:2023-11-30 18:39:26 24 4
gpt4 key购买 nike

注意:最初,我认为这个问题是由更复杂的事情引起的;我现在看到(并编辑了标题和示例代码)唯一的区别是分号的存在与否。这可能使这个回答变得轻而易举,但我仍然很惊讶地看到尾随分号在这种情况下很重要,而在其他情况下却没有...

为什么这样做:

<script type="text/javascript">
this.someFunc = function () {};
(function () {
console.log("self-invoking function called.")
})();
</script>

但这不是:

<script type="text/javascript">
this.someFunc = function () {}

(function () {
console.log("self-invoking function called.")
})();
</script>

然而,这确实:

<script type="text/javascript">
this.someFunc = function () {}
var someVar = "value";
console.log("someVar is:"+someVar);
</script>

后者将自调用函数解释为 undefined,因此无法评估/执行它。在 OSX 上的 Chrome 13、Firefox 6 和 Safari 5 上测试。

最佳答案

我相信第二个片段实际上是在执行空函数声明。如果您将示例更改为:

<script type="text/javascript">
this.someFunc = function (arg) { console.log(arg); }

(function () {
console.log("self-invoking function called.")
})();
</script>

然后运行 ​​(FF6),您将看到它记录:function()。它传入第二个匿名函数作为第一个匿名函数的参数。如果您重新排列,这会更有意义:

<script type="text/javascript">
this.someFunc = function (arg) { console.log(arg); }(
function () {
console.log("self-invoking function called.")
})

(); //the parser doesn't know what to do with this line.
</script>

关于javascript - 缺少分号意外中断脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7287508/

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