js 类型转换

Tags
javascript
Created
Apr 26, 2015 2:13 PM
字符串
数字
布尔值
对象(构造函数)
特殊类型
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。基础数据类型都是按值访问,因为我们可以直接操作保存在变量中的实际的值。

SuperMade with Super