1:为什么foo && baz
的结果不是1?因为true是1。
var foo = 1;
var baz = 2;
foo && baz; // returns 2, which is true
2:console.log(foo + +bar);
中有两个加号,它们的含义是什么?
var foo = 1;
var bar = '2';
console.log(foo + +bar);
答案 0 :(得分:10)
这是因为&&
(逻辑AND )运算符返回它计算的最后一个操作数的值。由于foo
为true
,因此必须评估bar
以确定表达式的结果(如果true
也是{{1},则只会bar
}})。
true
(逻辑OR )运算符会发生相反的情况。在这种情况下,由于||
为foo
,因此表达式的结果为true
而无需评估true
,因此bar
的值将被退回。
关于您的第二个问题,一元foo
运算符允许将字符串+
转换为数字'2'
。
答案 1 :(得分:4)
&&
返回上次评估值的值。 '&&'是一个运营商。大部分时间它都在这样的上下文中使用
if ( something && somethingelse ) {}
换句话说
0 && 2 //would return 0 because 0 is a falsy value
12 && 10 && 0 && 100 // would return 0 to
10 && 123 && "abc" // returns "abc"
+
是一个数学运算符,但它可用于将字符串转换为数字。
1 + 1 = 2
1 + '1' = 11 //van damme would like this one
1 + +'1' = 2 // somce '1' got converted to a number
答案 2 :(得分:2)
Javascript跟随Short Circuit Evaluation。因此,根据这一点,如果两个值都为真,则javascript返回最后一个值