前言
本文主要给大家介绍了关于JavaScript运算符规则和隐式类型转换的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
隐式类型转换
在 JavaScript 中,当我们进行比较操作或者加减乘除四则运算操作时,常常会触发 JavaScript 的隐式类型转换机制;而这部分也往往是令人迷惑的地方。譬如浏览器中的 console.log 操作常常会将任何值都转化为字符串然后展示,而数学运算则会首先将值转化为数值类型(除了 Date 类型对象)然后进行操作。
我们首先来看几组典型的 JavaScript 中运算符操作结果,希望阅读完本部分之后能够对每一个条目都能进行合理解释:
// 比较[] == ![] // trueNaN !== NaN // true1 == true // true2 == true // false"2" == true // flasenull > 0 // falsenull < 0 // falsenull == 0 // falsenull >= 0 // true// 加法true + 1 // 1undefined + 1 // NaNlet obj = {};{} + 1 // 1,这里的 {} 被当成了代码块{ 1 + 1 } + 1 // 1obj + 1 // [object Object]1{} + {} // Chrome 上显示 "[object Object][object Object]",Firefox 显示 NaN[] + {} // [object Object][] + a // [object Object]+ [] // 等价于 + "" => 0{} + [] // 0a + [] // [object Object][2,3] + [1,2] // '2,31,2'[2] + 1 // '21'[2] + (-1) // "2-1"// 减法或其他操作,无法进行字符串连接,因此在错误的字符串格式下返回 NaN[2] - 1 // 1[2,3] - 1 // NaN{} - 1 // -1
原始类型间转换
JavaScript 中我们常说的原始类型包括了数值类型、字符串类型、布尔类型与空类型这几种;而我们常用的原始类型之间的转换函数就是 String、Number 与 Boolean:
// Stringlet value = true;console.log(typeof value); // booleanvalue = String(value); // now value is a string "true"console.log(typeof value); // string// Numberlet str = "123";console.log(typeof str); // stringlet num = Number(str); // becomes a number 123console.log(typeof num); // numberlet age = Number("an arbitrary string instead of a number");console.log(age); // NaN, conversion failed// Booleanconsole.log( Boolean(1) ); // trueconsole.log( Boolean(0) ); // falseconsole.log( Boolean("hello") ); // trueconsole.log( Boolean("") ); // false
最终,我们可以得到如下的 JavaScript 原始类型转换表(包括复合类型向原始类型转换的范例):
原始值 | 转化为数值类型 | 转化为字符串类型 | 转化为 Boolean 类型 |
---|---|---|---|
false | 0 | "false" | false |
true | 1 | "true" | true |
0 | 0 | "0" | false |
1
学习交流
热门图片
猜你喜欢的新闻
新闻热点 2024-04-27 13:35:46
2024-04-27 13:33:47
2024-04-24 22:53:44
2024-04-23 19:32:50
2024-04-23 19:25:50
2024-04-23 19:13:19
疑难解答 图片精选 |