2013-04-12 59 views
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?

+1

'0'是虛假的。我會使用'var a = typeof a!=='undefined'? a:'123';' – Blender

回答

4

由於||試驗感實性,並0是被認爲是false的值中。當檢查

+0

我現在明白了,謝謝你 –

2

0和「」也計算爲false。因此,您需要將您的狀況更改爲

a = a != null ? a : '123'; 
b = b != null ? a : 55;