基础数据范例
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();
}