在Javascript中,var
声明的格式更好:
function test1() {
switch(type) {
case 1:
var test = "Hello One"
break;
case 2:
var test = "Hello Two"
break;
}
}
或者:
function test2() {
var test;
switch(type) {
case 1:
test = "Hello One"
break;
case 2:
test = "Hello Two"
break;
}
}
在 test2()中,在分配值之前,有一行额外的代码要将test
声明为var
,但这样可以节省{{1}两次。哪种方式比另一方好?
答案 0 :(得分:7)
javascript没有块范围,因此在switch块中声明变量不会像预期的那样工作。
此外,由于variable hoisting,函数块中的所有变量声明都被解释器提升到顶部,您的代码将如下所示:
function test1() {
var test;
var test;
switch(type) {
case 1:
test = "Hello One"
break;
case 2:
test = "Hello Two"
break;
}
}
执行提升后,很容易看出为什么第一个块不正确。
答案 1 :(得分:4)
答案 2 :(得分:2)
你的第一个代码错了;你已经多次声明了同一个变量。
JSHint会抱怨它。