gpt4 book ai didi

javascript - JS : Semicolons after variable declaration

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:46:37 27 4
gpt4 key购买 nike

<分区>

我偶然发现了一个非常有趣的陷阱,它真的很难找到。既然找到了,解决起来也不难,但我想找到解释,以免以后重复类似的事情。这是我的 JS 代码的简化版本:

//the following does not work:
var A = function(){
console.log('I am A')
}
(function B(){
console.log('I am B');
})()
A();

我期待在控制台中看到“我是 B”,然后是“我是 A”。然而,有未捕获的 TypeError:undefined 不是函数

经过长时间的调试,我发现是 A 函数后面缺少的分号导致了问题:

//the following works as expected:
var A = function(){
console.log('I am A')
};
(function B(){
console.log('I am B');
})()
A();

此外,当您以其他方式声明函数时,一切都会很好:

//this works too
function A(){
console.log('I am A')
}
(function B(){
console.log('I am B');
})()
A();

所以,它是变量声明和括号的组合,破坏了代码。

您能解释一下为什么会这样吗?

这是一个用于测试的 fiddle : http://jsfiddle.net/wxu2f8en/

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