var x=1
if(x){
x=0;
}
if(x){
x=1
};
alert(x);
我无法理解为什么它是0。
答案 0 :(得分:6)
使用
var x=1
x
开始是真实的。这意味着第一个if
已实现:
if(x){x=0;}
使x
为假(0),因此第二个if
无法运行
if(x){
因此,最后,x
是0
。
答案 1 :(得分:2)
您正在寻找的是Java中的“强制”。 当我们在需要其他类型变量的场所/功能/条件等中使用一种类型的Javascript变量时,Javascript不会引发错误。而是将变量的值更改为该特定类型的变量。它称为强制。
例如:
var a = "" ;
if (a){ //a is coerced to false
console.log (true);
}
else{
console.log (false);
}
在上面的代码中,空字符串被强制为false。
类似地,在您的代码中,发生了强制:
var x=1
if(x){ // x is coerced to true, this condition is met and x is set to 0.
x=0;
}
if(x){ // since x is 0, it is coerced to false, so condition is not satisfied
x=1
};
alert(x);
有关更多详细信息,请查看此link。
答案 2 :(得分:1)
var x=1
if(x){ // x is 1 here condition success
x=0; // so x is assigned as 0
}
if(x){ // so here x is 0 so condition fails
x=1
};
alert(x); // then it alerts 0
答案 3 :(得分:1)
第一个x为真(1),因此运行第一个if语句,并将其设为0。这是虚假的,因此第二个if语句将被跳过,并警告x(0)的值。
答案 4 :(得分:1)
JavaScript中有6个伪造的值。
console.log('Is truthy: ', isTruthy(false));
console.log('Is truthy: ', isTruthy(0));
console.log('Is truthy: ', isTruthy(undefined));
console.log('Is truthy: ', isTruthy(null));
console.log('Is truthy: ', isTruthy(NaN));
console.log('Is truthy: ', isTruthy(""));
console.log('Is truthy: ', isTruthy(''));
console.log('Is truthy: ', isTruthy(``));
function isTruthy(v) {
if(v) {
return true;
} else {
return false;
}
}
有关更多信息,您可以参考此link。
您的代码说明:
var x=1
if(x) { // x is 1 = truthy
x=0; // x is now 0
}
if(x) { // x is 0 = falsy (as per above explanation)
x=1
};
alert(x); // alert 0
希望这对您有所帮助。
答案 5 :(得分:1)
if
,则控制到达truthy
语句内的逻辑。falsy
。falsy
值的不同类型。最后,结果是0。
我认为那句话是什么样的。
if (x === 1) { // some code }
这会更有意义。只需考虑一下上面的代码为什么起作用,事情就会变得有意义。
答案 6 :(得分:1)
所以这是我对我所理解的解释。 在这里,我们将值1分配给变量x。
var x=1
接下来,我们正在检查x的值。
if(x)
{
x=0;
}
如果变量x为以下任一情况,则if(x)
条件将为true:
所以x = 1,因此将值0分配给x。 现在,在下一个条件中,x将等于0。因此,该条件未断言为true。 x不会被赋值为1。 因此,您得到的警报为0。 我希望这是有道理的。