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');
标签:console,undefined,预判,2024,l1,06,null,复盘,log From: https://www.cnblogs.com/pingfanliliang/p/18226811