js 类型转换



字符串数字布尔值对象(构造函数)
特殊类型
undefined"undefined"NaNfalsethrows TypeError
null"null"0false
throws TypeError
布尔值
true"true"1

new Boolean(true)
false"false"0

new Boolean(false)
字符串
""

0falsenew String("")
"1.2"

1.2true
new String("1.2")
"one"

NaNtrue
new String("one")
数字
0"0"

falsenew Number(0)
Infinity"Infinity"

truenew 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。基础数据类型都是按值访问,因为我们可以直接操作保存在变量中的实际的值。