基本数据类型:
string、number、boolean、null、undefined
引用数据类型:
object、array、function
使用typrof检测数据:
typeof "123" // 返回 string
typeof 3.14 // 返回 number
typeof NaN // 返回 number
typeof false // 返回 boolean
typeof [1,2,3] // 返回 object
typeof {name:'123'} // 返回 object
typeof function () {} // 返回 function
typeof myCar // 返回 undefined (如果 myCar 没有声明)
typeof null // 返回 object
typeof undefined //返回undefined
object数据类型的无法通过typeof来区分
使用constructor属性,返回所有js变量的构造函数
"123".constructor // 返回函数 String() { [native code] }
(3.14).constructor // 返回函数 Number() { [native code] }
false.constructor // 返回函数 Boolean() { [native code] }
[1,2,3,4].constructor // 返回函数 Array() { [native code] }
{name:'123'}.constructor // 返回函数 Object() { [native code] }
new Date().constructor // 返回函数 Date() { [native code] }
function () {}.constructor // 返回函数 Function(){ [native code] }
将字符串转为数字:Number()
Number('') //返回0
Number(' ') //返回0
Number('1 3') //返回NaN
Number('13') //返回13
一元运算符+:将变量转换为数字
var x = +’123s‘ // x是NaN
var x = +’123‘ // x是123
自动类型转换:
5 + null // 返回 5 null 转换为 0
"5" + null // 返回"5null" null 转换为 "null"
5 + ’1‘ //返回‘51’
"5" + 1 // 返回 "51" 1 转换为 "1"
"5" - 1 // 返回 4 "5" 转换为 5
| 原始值 | 转换为数字 | 转换为字符串 | 转换为布尔值 |
|---|---|---|---|
| false | 0 | "false" | false |
| true | 1 | "true" | true |
| 0 | 0 | "0" | false |
| 1 | 1 | "1" | true |
| "0" | 0 | "0" | true |
| "000" | 0 | "000" | true |
| "1" | 1 | "1" | true |
| NaN | NaN | "NaN" | false |
| Infinity | Infinity | "Infinity" | true |
| -Infinity | -Infinity | "-Infinity" | true |
| "" | 0 | "" | false |
| "20" | 20 | "20" | true |
| "hello" | NaN | "hello" | true |
| [ ] | 0 | "" | true |
| [20] | 20 | "20" | true |
| [10,20] | NaN | "10,20" | true |
| ["hello"] | NaN | "hello" | true |
| ["hello","Google"] | NaN | "hello,Google" | true |
| function(){} | NaN | "function(){}" | true |
| { } | NaN | "[object Object]" | true |
| null | 0 | "null" | false |
| undefined | NaN | "undefined" | false |