、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 规范中将数据类型转换为字符串的规则:
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()
方法转化null
或undefined
时,都始终返回 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
推荐阅读
- 屋里有蟑螂怎么彻底根除 屋里有蟑螂怎么消灭掉
- 二字网名超拽霸气 二字网名超拽霸气冷酷类型
- 童谣彻底颠覆自己的形象,黑色丝袜搭配双排风衣大秀模特气息!
- 手机频繁提示升级更新?教你一招,彻底关闭它
- Lisa再次作妖?被路易威登彻底抛弃,各国粉丝追着骂
- 刘亦菲彻底告别少女时代,肉色丝袜搭配银星连衣裙女人味十足!
- 韩红的“黑脸”,让《声生不息》节目组彻底被打脸
- 一味山楂健康减肥,不同肥胖类型的配伍秘方!轻松瘦身喝出来!
- 这次连沈腾都遭殃了,彻底触碰到了“底线”,贾玲不加入是正确的
- 心酸!云昊开播带货时聊学历遗憾,二八事件彻底改变人生轨迹