1、数据类型 :
基本数据类型:
数值型 number
字符型 string
布尔型 boolean (true/false)
复合数据类型 :
对象 object
特殊数据类型 :
null 空 (null的类型实际上就是object)
undefined 未定义的
es6新增symbol:
唯一性,类似ID。
用于对象属性名(key)时不会被对象操作方法枚举
定义:let s1 = Symbol();
参考网址:https://www.jianshu.com/p/f40a77bbd74e
2、判断方法
typeof
判断基本数据类型,number、string、undefined、boolean。(其他打印为object或function)。
例: typeof 变量名 // 返回类型
constructor
constructor是原型prototype的一个属性,当函数被定义时候,js引擎会为函数添加原型prototype,并且这个prototype中constructor属性指向函数引用, 因此重写prototype会丢失原来的constructor。
(1:null 和 undefined 无constructor,这种方法判断不了。
2:还有,如果自定义对象,开发者重写prototype之后,原有的constructor会丢失,因此,为了规范开发,在重写对象原型时一般都需要重新给 constructor 赋值,以保证对象实例的类型不被篡改。)
例: [].constructor == Array // true
instanceof
用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。
例: arr instanceof Array // true
isArray()
方法用于判断一个对象是否为数组。如果对象是数组返回 true,否则返回 false。
例: Array.isArray(obj)
Object.prototype.toString.call(变量名)
判断所有类型,但不能准确判断对象属于哪个实例,只能用instanceof判断。
例: Object.prototype.toString.call(1) ; // [object Number]
Object.prototype.toString.call(1).slice( 8, -1) ); // Number
判断是否为undefined
例: typeof(变量) == “undefined”
判断是否为null
例:!exp && typeof(exp)!=”undefined” && exp!=0 // exp为变量
参考网址:
https://www.cnblogs.com/lmsblogs/p/11280821.html
https://www.cnblogs.com/yadiblogs/p/10750775.html