【发布时间】:2020-01-27 12:58:26
【问题描述】:
我不明白为什么在函数中声明变量时会表现得如此奇怪。
-
在
first函数中,我使用let声明变量b和c,其值为10:b = c = 10;在我展示的
second函数中:b + ", " + c这表明:
10, 10 -
同样在
first函数中,我声明a的值为10:let a = b = c = 10;但在
second函数中却显示错误:找不到变量:
a -
现在在
first函数中,我声明d的值为20:var d = 20;但在
second函数中,它显示与以前相同的错误,但变量d:找不到变量:
d
例子:
function first() {
let a = b = c = 10;
var d = 20;
second();
}
function second() {
console.log(b + ", " + c); //shows "10, 10"
try{ console.log(a); } // Rreference error
catch(e){ console.error(e.message) }
try{ console.log(d); } // Reference error
catch(e){ console.error(e.message) }
}
first()
【问题讨论】:
-
你在声明全局变量,因为
b和c没有前缀var关键字。a和d是first本地的。 -
评论不用于扩展讨论;关于这是否是一个好的面试问题的切题对话是archived in chat。
-
这让我想起了Visual Basic中的类似情况;
Dim Apple, Banana, Pear As Fruit表示Dim Apple / Dim Banana / Dim Pear As Fruit,而不是Dim Apple As Fruit / ...。
标签: javascript variable-declaration