2
function foo( a, b ) {

  a = a || '123';
  b = b || 55;  
  document.write( a + ',' + b );
}

foo(); // prints: 123,55
foo('bar'); // prints: bar,55
foo('x', 'y'); // prints x,y

但:

foo(0,''); // prints: 123,55

为什么不打印 0 ,55?

4

3 回答 3

4

因为||测试真实性,并且0是被认为是的值之一false

于 2013-04-12T06:16:52.580 回答
3

因为该值0是一个“假”值,并且被认为是false

于 2013-04-12T06:17:03.380 回答
2

0 和 "" 在选中时也会计算为 false。因此,您需要将您的条件更改为

a = a != null ? a : '123';
b = b != null ? a : 55;  
于 2013-04-12T06:17:52.940 回答