function myFunc() {
let a = b = 0;
}
myFunc ();
原因是赋值运算符是从右到左的求值的。这意味着当多个賦值运算符出现在一个表达式中时, 它们是从右向左求值的。所以上面代码变成了这样:
function myFunc() {
let a = (b = 0);
}
myFunc ();
首先,表达式b = 0求值,在本例中b没有声明。因此,JS引擎在这个函数外创建了 一个全 局变量b,之后表达式b = 0的返回值为0,并赋给新的局部变量a。
我们可以通过在赋值之前先声明变量来解决这个问题。
function myFunc() {
let a,b;
a = b = 0;
}
myFunc ();
Was this helpful?
0 / 0