Javascript if中变量的作用域
为什么结果不是2?我想知道为什么在if条件中重新声明a和b不会创建新的变量a和b?有什么规则可以遵循吗?在javascript中,用var声明的变量被提升到函数的顶部。这意味着您期望的范围规则不起作用。ES6标准中使用let关键字解决了这一问题,该关键字将限定您期望的范围。请参阅以下网站了解有关let的更多信息。您应该注意,ES6标准是新的,并没有得到广泛支持。您现在可以通过使用诸如Babel之类的transpiler来使用该标准。你可以在操场上玩这个,比如Javascript if中变量的作用域,javascript,Javascript,为什么结果不是2?我想知道为什么在if条件中重新声明a和b不会创建新的变量a和b?有什么规则可以遵循吗?在javascript中,用var声明的变量被提升到函数的顶部。这意味着您期望的范围规则不起作用。ES6标准中使用let关键字解决了这一问题,该关键字将限定您期望的范围。请参阅以下网站了解有关let的更多信息。您应该注意,ES6标准是新的,并没有得到广泛支持。您现在可以通过使用诸如Babel之类的transpiler来使用该标准。你可以在操场上玩这个,比如 “var”将在当前作用域中创建局部变
“var”将在当前作用域中创建局部变量,但由于javascript中的作用域是函数级的,在前面提到的代码段中,我们在同一个函数中,javascript解释器认为if块中的变量声明是同一函数作用域中同一变量的重新声明。javascript没有块作用域。。。它只有功能范围(使用时除外)——@ArunPJohny当然有,这就是
let
的目的。注释中已经提到的@MadaraUchiha的可能副本。。。请参阅()
中的内容,该内容经过编辑以添加链接。函数和变量声明被提升到封闭函数的顶部。这就是重新声明没有效果的原因。
function a(){
var x,y,a,b;
var a=2;
var b=2;
if (true) {
var a,b;
b=1;
a = 1;
}
alert(a)
}
a();