如果變數沒有給值則換成預設值:
//預設值是3
var a;
console.log(a || 3); // 3
var b = 4;
console.log(b || 3); // 4
console.log(null || 3); // 3
console.log(undefined || 3); // 3
console.log(false || 3); // 3
console.log(true || 3); // true
//預設值是3
console.log(undefined || 3); // 3
console.log(1 || 3); // 1
console.log(0 || 3); // 3 (非預期結果)
//預設值是true
console.log(undefined || true); // true
console.log(true || true); // true
console.log(false || true); // true (非預期結果)
//預設值是false
console.log(undefined || false); // false
console.log(true || false); // true
console.log(false || false); // false (這邊的false是來自預設值的false)
如果要正常輸出數字1
,0
,
或是輸出true
或false
,
安全做法還是用全等於===
判定typeof是否為'undefined'
比較安全
(這邊要注意typeof判定完的結果都是輸出成字串,要加單引號或雙引號)
//預設值是3
var f;
console.log(typeof f); // 'undefined'
console.log( (typeof f === 'undefined')?3:f ); // 3 (預設值)
f = 0;
console.log( (typeof f === 'undefined')?3:f ); // 0
js