覆盤工作-2024-06

平凡力量發表於2024-06-02

1.js != 和 !==

// == 等於
// 會執行型別轉換,嘗試使兩邊的值相等
// 當一個值是null,
// 另一個值是undefined,
// null==undefined 會返回true
// 因為它們都被視為“空”或“無”

// === 嚴格等於
// 不會進行型別轉換
// null和undefined是不同的
// 所以null===undefined返回false
let l1;
 // 我之前的錯誤的測試寫法:
 // console.log('1:' + l1!='');
 // 我預期是先輸出序號1,
 // 再輸出l1!=''的判斷結果
 // 但是
 // 因為運算子+l優先順序高於!=,
 // 所以其實我寫的測試程式碼
 // 是先產生了一個字串
 // 即'1:'+l1
 
 // 我預判是true
 console.log('1:', l1!='');
 // 我預判是true
 console.log('1.1:', l1!=='');
 // 我預判是true
 // 但實際為false
 // 分析:
 // == 等於
 // 會執行型別轉換,嘗試使兩邊的值相等
 // 當一個值是null,
 // 另一個值是undefined,
 // null==undefined 會返回true
 // 因為它們都被視為“空”或“無”
 console.log('2:', l1!=null);
 // 我預判是true
 // 分析:
 // === 嚴格等於
 // 不會進行型別轉換
 // null和undefined是不同的
 // 所以null===undefined返回false
 console.log('2.1:', l1!==null);
 // 我預判是false
 console.log('3:', l1!=undefined);
 // 我預判是false
 console.log('3.1:', l1!==undefined);
 
 let l2 = '';
 // 我預判是false
 console.log('4:', l2!='');
 // 我預判是false
 console.log('4.1:', l2!=='');
 // 我預判是true
 console.log('5:', l2!=null);
 // 我預判是true
 console.log('5.1:', l2!==null);
 // 我預判是true
 console.log('6:', l2!=undefined);
 // 我預判是true,
 console.log('6.1:', l2!==undefined);
 
 // 輸出undefined
 console.log(l1);

// 輸出"1 2 3 4 5",
// console.log()傳遞多個引數時,
// 依次輸出多個引數,
// 引數之間用空格分隔
console.log(1, 2, 3, 4, 5);
// 輸出apple banana orange
console.log('apple', 'banana', 'orange');

// +拼接字串,最後輸出了一個字串
// 輸出applebananaorange
console.log('apple' + 'banana' + 'orange');

相關文章