Try   HackMD

Javascript自訂變數預設值

如果變數沒有給值則換成預設值:

//預設值是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

這個用法的缺點:

  • 1會被當成true
  • 0會被當成false
  • 如果預想要輸入的值是true/false也不適合用
//預設值是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,
或是輸出truefalse,
安全做法還是用全等於===判定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
tags: js