你能解释一下这两个javascript例子吗?

时间:2011-06-24 11:53:14

标签: javascript

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);

3 个答案:

答案 0 :(得分:10)

这是因为&&逻辑AND )运算符返回它计算的最后一个操作数的值。由于footrue,因此必须评估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返回最后一个值