# Javascript自訂變數預設值 如果變數沒有給值則換成預設值: ```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也不適合用 ```javascript= //預設值是3 console.log(undefined || 3); // 3 console.log(1 || 3); // 1 console.log(0 || 3); // 3 (非預期結果) ``` ```javascript= //預設值是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判定完的結果都是輸出成字串,要加單引號或雙引號) ```javascript= //預設值是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`