js 类型转换
字符串 | 数字 | 布尔值 | 对象(构造函数) | |
特殊类型 | ||||
undefined | "undefined" | NaN | false | throws TypeError |
null | "null" | 0 | false | throws TypeError |
布尔值 | ||||
true | "true" | 1 | new Boolean(true) | |
false | "false" | 0 | new Boolean(false) | |
字符串 | ||||
"" | 0 | false | new String("") | |
"1.2" | 1.2 | true | new String("1.2") | |
"one" | NaN | true | new String("one") | |
数字 | ||||
0 | "0" | false | new Number(0) | |
Infinity | "Infinity" | true | new Number(Infinity) | |
对象 | ||||
{} | ① | ② | true | |
[] | "" | 0 | true | |
[1] | "1" | 1 | true | |
["a"] | 使用join(",") | NaN | true | |
function(){} | 源代码 | NaN | true | |
Date | "Date" | 毫秒数 | true | |
RegExp | "/.../" | NaN | true |
由于 js 是弱类型语言,所以 js 会在需要的时候自动按照以上方法转换类型
①:如果对象具有 toString() 则调用这个方法,如果返回原始值则按上表转换成字符串。如果没有 toString() 则调用 valueOf() ,否则抛回类型错误异常
②:跟①类似,只不过先调用valueOf()。
object.toSting() > [Object Object]
valueOf(): 有原始值就返回原始值,否则返回本身
NaN 跟数字比较总是返回false,NaN 是数字其中之一
自动类型转换:
使用 + 时:优先转为字符串,除非没有字符串,就会转成数字
使用 < 时:优先转为数字(number,包括NaN),除非2个操作数都是字符串(> 一样)
if 中的判断会对当中的表达式用 Boolean 构造函数
只有+0,-0,NaN 的数字为false。
基础数据类型都是一些简单的数据段,JavaScript中有5中基础数据类型,分别是Undefined、Null、Boolean、Number、String。基础数据类型都是按值访问,因为我们可以直接操作保存在变量中的实际的值。