基本数据类型
ECMAScript中有5种简单数据类型(也称基本数据类型):Undefined,Null,Boolean,Number和String。还有一种复杂数据类型(引用型)Object。ECMAScript不支持任何创建自定义类型的机制,而所有值都是上述6中数据类型之一。(ps:ES6新增了一种数据类型Symbol,这里不做讨论)
Undefined
值:undefined
-
出现场景:
使用var声明变量未赋值(相当于
var test = undefined;
)获取对象不存在的属性
无返回值的函数的执行结果
函数的参数没有传入
void(expression)
类型转换:
- | Boolean | Number | String |
---|---|---|---|
undefined | false | NaN | "undefined" |
Null
值:null。null值表示一个空对象指针,若定义的一个变量准备将来用来保存一个对象,那么最好将变量初始化为一个null
-
出现场景:
var test = null;
null表示调用的对象不存在
注意区分null和undefined的区别?
null == undefined; // true
null === undefined; // false
类型转换
- | Boolean | Number | String |
---|---|---|---|
null | false | 0 | "null" |
Boolean
值:true or false。
-
出现场景:
条件语句导致系统执行的隐式装换
定义
类型转换
- | number | string |
---|---|---|
true | 1 | "true" |
false | 0 | "false" |
String
值:由单引号或双引号括起来的字符序列
出现场景:定义
类型转换,有两种方法,
String()
和toString()
- | Boolean | Number |
---|---|---|
"" | false | 0 |
"123" | true | 123 |
"a12" | true | NaN |
Number
值:整数和浮点值
出现场景:
类型转换,
Number()
,parseInt()
和parseFloat()
。第一个函数可以应用于任何数据类型,另两个函数专门用于把字符串转换成数值
- | Boolean | String |
---|---|---|
0 | false | 0 |
1 | true | 1 |
Infinity | true | "Infinity" |
NaN | false | "NaN" |
Object
值:一组属性的集合
出现场景:
类型转换
- | Boolean | Number | String |
---|---|---|---|
{} | true | NaN | "[object Object]" |
类型识别
typeof(操作符,不是函数)
可以识别简单类型(Null除外)
不能识别具体的对象类型(Function除外)
typeof "darko"; //"string"
typeof 123; //"number"
typeof true; //"boolean"
typeof undefined; //"undefined"
typeof null; //"object"
typeof {name:"darko"}; //"object"
typeof function(){}; // "function"
typeof []; // "object"
typeof new Date(); //"object"
instanceof(三目运算符)
识别内置对象的类型
不可以识别简单类型
识别自定义对象类型
[] instanceof Array; //true
/\d/ instanceof RegExp; //true
1 instanceof Number; //false
"abc" instanceof String; //false
constructor
识别简单类型(undefined和null除外)
识别内置对象类型
识别自定义对象类型
(1).constructor === Number; // true
true.constructor === Boolean; // true
[].constructor === Array; // true
Object.prototype.toString
可以简单类型和内置对象
不能识别自定义类型
function type(obj){
return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。