luk*_*hek 42 javascript variables if-statement
在if语句中定义JavaScript变量是否正确?
if(a==1){
var b = 1;
} else {
var b = 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道上面的代码可行,但是,WebMatrix强调了变量.
我应该在if语句之外定义变量吗?或者第一个选项是正确的?或者它真的没关系?
var b = '';
if(a==1){
b = 1;
} else {
b = 0;
}
Run Code Online (Sandbox Code Playgroud)
jAn*_*ndy 57
作为ES2017规范(2017年7月8日)正式发布的,EcmaScript的不支持真正块的范围现在使用let或const关键字.
由于ECMAscript没有块范围但没有函数范围,因此在函数上下文中声明任何变量是一个非常好的主意.
即使您可以在函数上下文中的任何位置进行变量和函数声明,但如果您不完全了解后果,则会产生一些奇怪的问题.
头痛的例子:
var foo = 10;
function myfunc() {
if (foo > 0) {
var foo = 0;
alert('foo was greater than 0');
} else {
alert('wut?');
}
}
Run Code Online (Sandbox Code Playgroud)
猜猜看,我们得到了什么?在myfunc这里打电话时提醒 这是因为ECMAscript解释器会自动将任何语句和函数声明提升到上下文的顶部.基本上,在第一次之前初始化.varfooundefinedif statement
进一步阅读:JavaScript范围和提升