彻底搞懂 JS 类型转换( 二 )

② -、*、/、++、--// 将一个或多个值转换为数字 - '1'     // -1 [] - 1    // -1 [] - {}   // NaN③ ==、!=// 两个操作数 a == b// 1. 如果一个是 `null` 而另一个是 `undefined`,它们是相等的null == undefined    // true// 2. 如果一个是数字,另一个是字符串,将字符串转换为数字 , 再比较1 == '1'             // true// 3. 如果其中一个是布尔值 , 将其转换为数字 , 再次比较true == 1            // truefalse == 0           // true// 4. 如果一个是对象,另一个是数字或字符串,将对象转换为原始类型,再次比较[1] == 1             // true['1'] == '1'         // true下图是在使用 == 时,判断两个操作数是否相等的总结(绿色表示相等 , 白色表示不等):


彻底搞懂 JS 类型转换

文章插图
④ >、>=、<、<=// 两个操作数a > b// 1. 如果其中一个是对象,则将其转换为原始类型,再次比较[2] > 1   // true// 2. 如果两者都是字符串,使用字母顺序比较它们'b' > 'a' // true// 3. 如果其中一个是数字,则将一个或两个非数字转换为数字'2' > 1   // true⑤ in/* 如果左操作数不是字符串 , 则将其转换为字符串 */ a in b'1' in {1: ''}    // true 1 in {1: 'a'}    // true 1 in ['a', 'b']  // true2. 常见类型转换(1)字符串转换将数据类型转换为字符串称为字符串转换 , 可以使用 String() 函数将数据类型显式转换为字符串 。当一个操作数是字符串时 , 可以通过使用 + 运算符来触发隐式字符串转换 。
① 数字 => 字符串:Number对象的 toString() 方法会返回指定 Number 对象的字符串表示形式 。String()和 new String() 会把对象的值转换为字符串 。
String(20);           // '20'String(10 + 40);      // '50'(10 + 40).toString(); // '50'new String(10 + 20);  // '30'② 布尔值 => 字符串:String() 和 toString() 方法会将布尔值转化为对应的字符串形式 。
String(true);     // 'true'String(false);    // 'false'true.toString()   // 'true'false.toString()  // "false"③ 数组 => 字符串:String() 方法会将数组元素通过逗号连接起来,无论嵌套多少层 , 都会将其展开并返回元素拼接好的字符串 。如果是空数字 , 会返回空字符串:
String([1, 2, 3]);                // '1,2,3'String([1, 2, 3, [4, [5]]]);      // '1,2,3,4,5'String([1, 2, 3, [4, [5, {}]]]);  // '1,2,3,4,5,[object Object]'String([]);                       // ''④ 对象 => 字符串:使用 String() 方法会将对象转化为 '[object Object]',无论对象是否为空对象:
String({name: "Hello"});   // '[object Object]'⑤ null / undefined / NaN => 字符串:使用 String() 方法会将  nullundefined


推荐阅读