JS数据类型分为哪几个?
- 基本数据类型(又称为值类型)
- 引用类型
值类型(储存在栈中):
-
undefined 未定义
-
String 字符串
-
Number 数字
-
Boolean 布尔
-
Symbol 符号
引用类型(储存在堆中):
- Array 数组
- Object 对象
- null 空(有歧义,也可以认为它是值类型)
- Function 函数
2. 怎么判断数据类型?
- 最常见的判断方法:typeof
var a = "iamstring.";
var b = 222;
var c= [1,2,3];
var d = new Date();
var e = function(){alert(111);};
var f = function(){this.name="22";};
alert(typeof a) ------------> string
alert(typeof b) ------------> number
alert(typeof c) ------------> object
alert(typeof d) ------------> object
alert(typeof e) ------------> function
alert(typeof f) ------------> function
- 判断已知对象类型的方法: instanceof
alert(c instanceof Array) ---------------> true
alert(f instanceof Function) ------------> true
注意:instanceof 后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。
- 根据对象的constructor判断: constructor
alert(c.constructor === Array) ----------> true
alert(d.constructor === Date) -----------> true
alert(e.constructor === Function) -------> true
注意: constructor 在类继承时会出错
- 通用但很繁琐的方法: prototype
alert(Object.prototype.toString.call(a) === ‘[object String]') -------> true;
alert(Object.prototype.toString.call(b) === ‘[object Number]') -------> true;
alert(Object.prototype.toString.call(c) === ‘[object Array]') -------> true;
alert(Object.prototype.toString.call(d) === ‘[object Date]') -------> true;
alert(Object.prototype.toString.call(e) === ‘[object Function]') -------> true;
alert(Object.prototype.toString.call(f) === ‘[object Function]') -------> true;
3.JS数据的逻辑判断
逻辑与 &&
- var a = true&&88 //88
- var a = false&&88 //false
- var a = “” &&false //""
逻辑或 ||
- var a = false || 88;//88
- var b= 15||88;//15
- var b=""||false //false
注意:此处较绕脑,需反复理解
if语句的判断条件 truly变量与falsely变量
if语句是否执行,主要看条件是truly还是falsely
falsely:!!a ====false; 变量
-
!!0 === false;
-
!!NaN === false;
-
!!’’ === false;
-
!!null === false;
-
!!undefined === false;
-
!!false ===false;
truly:!!a ==== true; 变量
- 除了上述falsely变量的都是truly变量