【发布时间】:2019-11-24 17:55:43
【问题描述】:
下面两段代码有什么区别吗?
我想知道哪个是最佳做法。在 Block 2 中这样的 return 语句中声明一个新变量是否合法?
第 1 块:
function caseInSwitch(num) {
let answer = "";
switch (num) {
case 1:
return answer += "alpha";
case 2:
return answer += "beta";
case 3:
return answer += "gamma";
case 4:
return answer += "delta";
}
}
console.log(caseInSwitch(3)); //output gamma
console.log(answer); //output gamma
第 2 块:
function caseInSwitch(num) {
switch (num) {
case 1:
return answer = "alpha";
case 2:
return answer = "beta";
case 3:
return answer = "gamma";
case 4:
return answer = "delta";
}
}
console.log(caseInSwitch(3)); //output gamma
console.log(answer); //output gamma
如您所见,我已经尝试了这两种方法,它们在控制台中产生了相同的结果。
【问题讨论】:
-
为什么不直接
return "alpha"? -
对于第 1 块,console.log(answer);应该返回未定义,因为它是在函数中用
let定义的,所以它不存在于外部范围内。对于块2,它等于定义了一个全局变量answer。 -
@AppleJam 您应该将其发布为答案
-
这些都不是“最佳”实践。我只是把它写出来,这样就可以清楚地看到发生了什么,如果需要的话,可以使用多行。
-
错误陈述:“两者 [...] 在控制台中产生相同的结果”。您是否在第 1 块按“运行代码 sn-p”? ;-)
标签: javascript variables return