数据类型
- Number:(数值型),表示数字,包括整数和浮点数
- String:(字符串型),表示文本,使用单引号,双引号或反引号括起来
- Boolean:(布尔型),表示真或假两个逻辑,true或false
- Undefined:(未定义),表示变量已声明但未被赋值
- Null:(空),表示变量被赋值为空
- Symbol:(符号型),ES6新增,表示独一无二的值,通常用于对象属性标识符
- object:引用数据类型
- function
检测数据类型
- Typeof:可以用来判断基本数据类型,如,String,Number,Boolean,Undefined,Symbol,Typeof的返回值是该类型的字符串形式,但是Typeof无法判断引用数据类型。
- Instanceof:可以用来判断一个对象是否属于某个类,只要这个对象原型链上存在这个类,那使用Instanceof判断就会输出true,Instanceof 用String会返回true,但是Instanceof只能用来判断引用数据类型,不能判断基本数据类型
- Constructor:可以用来判断基本数据类型和引用数据类型,因为所有对象都会从它的原型上继承Constructor的属性,Constructor也存在一些局限性,如null和undefined没有构造函数,所以Constructor无法用来判断它们
- Object.prototype.toString.call():是一种专门用于检测数据类型的方法,它可以用来判断对象的具体类型,如Object.prototype.toString.call(Array)
,会返回[object.Array]
null和undefined的区别
Null:表示一个值被定义了,定义为空值,用于指示一个变量指向的对象为空,列如,当一个对象应该存在但没有实际内容时,将其设置为空null.
Undefined:表示一个值不存在,用于指示一个变量尚未被赋值或没有定义,如当一个变量没有被声明但没有被赋值时,它的值就是undefined.
他两的值啥区别:首先null他代表的是这个变量定义了,他在内存空间当中是没有内存空间的,他不占内存空间,这就是一个变量被赋值的null的意义,
undefined就表示这个变量,在内存空间当中是有空间的,只是空间内没有值而已,这是第一个方面他两代表的值的区别
他两平常用是怎么用的:第二个角度理解的话null通常情况下是比如说我通常情况下定义的一个变量
,暂且不给他赋值,后续在给他赋值,但如果这个变量他是引用数据类型,就给他初始值赋值null,就表示他原本是不存在的。后续在给他赋值就存在了
如果是基本数据类型我就给他赋值成undefined,也就是有空间了一会可以给他放东西,也就是说null表示一个空对象,undefined表示一个空的数字是字符串
他两的类型不一样:从第三角度来说null严格来讲 他的类型是object,然后他是原型链最顶级的一个原型undefined只是说我们找一个对象当中的属性值在原型链上如果找不到然后null就产生了undefined的一个衍生值
所以通常情况下访问一个对象当中并不存在的这个属性的值,比如说有过object里面是空的但现在cslog出object.name很明显object.name中是没有内容的我们会得到一个undefined