在ES2016中,我想知道在if语句中声明变量是否是最佳做法:
ECMA2016
let x = 1
if (false) {
x = 0
}
console.log(x) // 1
ES2016之前的,使用var
if (true) {
var x = 1
} else {
var x = 0
}
console.log(x) // 1
答案 0 :(得分:1)
ES5的最佳实践真的是
var x;
if (true) {
x = 1
} else {
x = 0
}
甚至
var x = true ? 1 : 0;
因为在功能范围的顶部定义var总是最清楚的(即使你还没准备好为它分配任何东西),也只能定义一次。
使用ES2015,您的示例是正确的:您应该在要使用的最高范围/块级别中定义x。
答案 1 :(得分:-1)
使用ECMA2016,你不能在if块中声明新变量,然后使用otside那个块。所以,你的变体看起来不错。