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

NaN 转化为其对应的字符串形式:
String(undefined);    // 'undefined'String(null);         // 'null'String(NaN);          // 'NaN'⑥ 日期 => 字符串:String(new Date('2022-08-20')) // 'Sat Aug 20 2022 08:00:00 GMT+0800 (中国标准时间)'⑦ 隐式转换当任何数据类型使用+运算符与字符串连接时会发生到字符串的转换(隐式转换):
"25" + 56;              // '2556'"25" + null;            // '25null'"Hello " + undefined;   // 'Hello undefined'"25" + false;           // '25fasle'"25" + {};              // '25[object Object]'"25" + [10];            // '2510'所以,当我们想要创建一个操作并且操作数类型之一是字符串时,应该小心使用类型强制转换 。
⑧ 总结下面是 ECMAScript 规范中将数据类型转换为字符串的规则:


彻底搞懂 JS 类型转换

文章插图
ECMAScript 规范:https://262.ecma-international.org/5.1/#sec-9.8
(2)布尔转换将数据类型转换为布尔值称为布尔转换 。这种转换既可以由 Boolean() 函数显式完成,也可以在逻辑上下文中隐式完成(如if/else )或通过使用逻辑运算符( ||、&&、! )触发 。
① 字符串 => 布尔值:使用 Boolean() 方法转化字符串时,只有当字符串为空时会返回false,其他情况都会返回 true
Boolean('hello'); // true Boolean(' ');     // true Boolean('');      // false② 数字 => 布尔值:使用 Boolean() 方法转化数字时,只有 0、-0 或 NaN 会转化为 false,其他情况会返回 true
Boolean(-123); // true Boolean(123);  // true Boolean(0);    // falseBoolean(-0);   // falseBoolean(NaN);  // false③ 数组 / 对象 => 布尔值:使用 Boolean() 方法转化数组或对象时,无论数组和对象是否有内容,都会返回true
Boolean([1, 2, 3]); // trueBoolean([]);        // trueBoolean({});  // trueBoolean({'hello': 'world'});  // true④ null / undefined => 布尔值:使用 Boolean() 方法转化nullundefined时,都始终返回 false
Boolean(undefined);  // false Boolean(null);       // false⑤ 隐式转换在数学运算中,true 转换为 1 , false 转换为 0:
true + 5;    // 6false + 5;   // 55 - true;    // 55 - false;   // 4⑥ 逻辑运算符、逻辑上下文// 如果其中一个不是布尔值,则将其转换为布尔值Boolean( null || undefined || 0 || -0 || NaN || '' )    // falseBoolean( 1 && 'a' && { } && [] && [0] && function(){} ) // truetrue && false // falsetrue && true // truetrue || false // truetrue || !false // true注意,逻辑运算符,例如 || 或 && 内部进行布尔转换 , 但实际上返回原始操作数的值,即使它们不是布尔值 。
'hello' && 123;   // 123


推荐阅读