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');