首页 > 语言 > JavaScript > 正文

JavaScript中运算符规则和隐式类型转换示例详解

2024-05-06 15:27:10
字体:
来源:转载
供稿:网友

前言

本文主要给大家介绍了关于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
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表