我一直在阅读有关 JavaScript 提升的文章。
JavaScript 范围界定和提升,作者 Ben Cherry
关于“提升”的两个词,作者:Dmitry Soshnikov
还有更多关于 JavaScript 类型强制、真假测试的信息: Truth、Equality 和 JavaScript以及其他一些资源
在练习一些时,发现我错过了一些关于提升和变量“真假”的重要概念。
1:带有重复变量声明的“if”真值测试
var foo = 1;
function bar() {
if (!foo) {
alert('inside if');
var foo = 10;
}
}
bar();
o/p:inside if
怀疑: 'foo' 值为 '1',if(!foo)
应该评估为false
并且该块不应该被执行(引用上面的资源:提升只影响var
&function
声明,但不影响执行)。但是为什么会显示该警报。如果我直接使用,情况并非如此false
(如下面的无技巧代码所示:片段#3)
2:没有重复变量声明的“if”真值测试
var foo = 1;
function bar() {
if (!foo) {
alert('inside if');
}
}
bar();
o/p:无输出;表示控制未进入“if”块
这是人们可以期待的
3: 'if' 使用 'false' 重复变量声明
var foo = 1;
function bar() {
if (false) {
alert('inside if');
var foo = 10;
}
}
bar();
o/p:无输出;表示控制未进入“if”块
这是人们可以期待的
有人请澄清。谢谢