共计 793 个字符,预计需要花费 2 分钟才能阅读完成。
JavaScript 是一门弱类型语言,其灵便的设计初衷也带来了隐式转换的弊病;上面是对 js 数据类型转换的梳理
首先得晓得 js 的数据类型 6 种根本数据类型与 object
6 种根本数据类型(含 es6):null
、undefined
、string
、number
、boolean
、symbol
(es6 新增)
隐式转换
转换场景
根本数据类型的转换(不含 symbol)
- 算数运算符(如
+
、-
、*
、/
等等)的隐式转换 :会将非number
转换成 number;留神,当+
有一边为 string 时,+
属于字符串连接符;其余数据类型转 number 的规定(此规定属于 ecma 规范,须要记忆):
原数据类型 | 转换成 number 后的后果 |
---|---|
number | 原number |
string | 纯数字的字符串会转成对应数字,含非数字的会转换成NaN , '' => 0 |
null | 0 |
undefined | NaN |
boolean | true => 1 ; false => 0 |
- 其余非逻辑运算符 (如
==
、+
、>=
) 的隐式转换: 当有一边含有 string 时,会将非 string 的转成字符串来解决;其余数据类型转字符串的规定(此规定属于 ecma 规范,须要记忆):
原数据类型 | 转换成 string 后的后果 |
---|---|
number | 数字对应的string |
null | 'null' |
undefined | 'undefined' |
boolean | true => 'true' ; false => 'false' |
留神:不含 symbol 是因为 symbol 不能转换
非根本数据类型的转换
- 非根本数据类型的对象会调用对应的转换方法来转换成根本数据类型,个别都会有 valueOf 与 toString;如果转换方法的返回值为根本数据类型,则会拿此根本数据类型走根本数据类型转换的逻辑;如果两个办法都没有或者都没能转换成根本数据类型,则转换失败
- Date 会先调用 toString,其余的会先调用 valueOf
留神:两边都是对象时
==
运算符比拟的是对象内存地址,
显示转换
正文完
发表至: javascript
2020-12-01