数据类型
created on 21/03/03
1、分类
- 基本(值)类型
- String:任意字符串
- Number:任意的数字
- Boolean:true/false
- undefined:undefined
- Null:null
- Symbol:表示唯一的、不可变的值
- 对象(引用)类型
- Object:任意对象
- Function:一种特别的对象(可以执行)
- Array:一种特别的对象(数值下标,内部数据是有序的)
2、判断
- typeof
- 可以判断:undefined/数值/字符串/布尔值/function
- 不能判断:null与object 、 object与array
- instanceof
- 判断对象的具体类型
- ===
- 可以判断:undefined,null
//1、值
var a;
console.log(a , typeof a , typeof a === 'undefined', a === undefined); //undefined "undefined" true true
a = 4;
console.log(typeof a === 'number'); //true
a = 'sjjcd';
console.log(typeof a === 'string'); //true
a = true;
console.log(typeof a === 'boolean'); //true
a = null;
console.log(typeof a, a === null); //object true typeof不能判断object与null
var arr = [];
console.log(typeof arr,arr === Array); //object false
//2、对象
var b1 = {
b2: [1, 'abc',console.log],
b3: function(){
console.log('b3');
return function(){
return 'hsjdsdnc';
}
}
}
//a instanceof b:a是b的实例
//instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上
console.log(b1 instanceof Object, b1 instanceof Array); //true false
console.log(b1.b2 instanceof Array, b1.b2 instanceof Object)//true true
console.log(b1.b3 instanceof Function, b1.b3 instanceof Object)//true true
console.log(typeof b1.b2 === 'array'); //false,typeof不能判断object与arry
console.log(typeof b1.b3 === 'function'); //true
console.log(typeof b1.b2[2]); //function
console.log(typeof b1.b2[2] === 'function',typeof b1.b2[2] === 'object'); //true false
b1.b2[2](4); //4
console.log(b1.b3()()); //b3 hsjdsdnc
3、undefined与null的区别?
- undefined代表定义未赋值
- null定义并赋值,值为null
var a;
console.log(a); //undefined
a = null;
console.log(a); //null
4、什么时候给变量赋值为null
- 初始赋值,表明将要赋值为对象
- 结束前,让对象成为垃圾对象(被垃圾回收器回收)
var b = null; //初始赋值为null,表明将要赋值为对象
//函数、数组都是对象
b = ['ascf', 12];
b = null; //让b指向的对象成为垃圾对象(被垃圾回收器回收)
5、严格区别变量类型与数据类型(了解)
- 数据的类型
- 基本类型
- 对象类型
- 变量的类型(变量内存值的类型)
- 基本类型:保存基本类型的数据
- 引用类型:保存地址值
- var a = {} //a保存的是对象的内存地址值