隐式转换
(1)字符串连接: 运算符+表示加法运算,JavaScript将把数字转换为字符串,再进行拼接。
var res = 44 + "55";
console.log(res); // 4455
(2)算术运算符(++ – - * / %) 或者比较运算符(> < >= <= != ==)会把两边转化为数字,进行运算
console.log(44 - "33"); // 11
console.log(44 - "33a"); // NaN
console.log(66 * "2"); // 132
// NaN ===>66 - Number(undefined) = 66 - NaN = NaN
console.log(66 - undefined);
console.log("66 > false ==>", 66 > false); // 在比较过程中,会把false通过Number(false) ==> 0
console.log("66 == '66' ==>", 66 == '66'); // 在比较过程中,会把'66'通过Number('66') ==> 66
/*
Number(undefined) = NaN;
Number(null) = 0;
NaN ==> 0
*/
console.log("undefined <= null ==>", undefined >= null); // false
console.log(null < 0, null > false, null < true) // false false true
console.log(null <= 0, null >= false, null <= true) // true true true
(3)关系运算符 == 和!=
注意: === 和!== 他们是恒等,他们的类型和值豆都要相等,所以不涉及转化
注意:NaN和任意的值,包括自己都不相等
NaN == NaN false
undefined只和自己、null相等, null同理 Number(undefined) == NaN
undefined == undefined true
特例:undefined == null true
(4)条件表达式 逻辑!(非) 将原本的true变成false, 原本的false变成true