js 变量类型

变量类型分为:基础类型和引用类型

基础类型:boolean, string, number, null, undefined, symbol

引用类型: array, object

  • typeof: 判断变量的类型
  • instanceof:判断某个对象是否是另外一个对象的实例

主要还是理解这两个判断的不同之处,不能死记硬背。

首先清楚地知道变量类型,基础类型和引用类型。

typeof:

数据类型通过typeof判断的结果如下:

类型 结果
undefined "undefined"
Boolean "boolean"
String "string"
Number "number"
Symbol "symbol"
null "object"(历史遗留问题)
函数对象 "function"
object,array,window... "object"

instanceof:  

首先理解一句话,在js里,一切(引用类型)都是对象。

然后看下instanceof的判断规则: A instanceof B

沿着A的__proto__这条线找,同时沿着B的prototype这条线找,如果出现同一个引用就返回true. 如果到终点还未重合就返回false

很容易理解吧。那么

var fn = function () { };
console.log(fn instanceof Object);//true

举例子理解下Instanceof:

let s1 = new String("s");
typeof s1  === "object"   //s1是String的实例化对象
s1 instanceof String   // true

那再看下这个例子:

let s2 = "s";
typeof s2 === "string"
s2 instanceof String //false

这里为什么是false呢?

这里就要深刻理解typeof和instanceof的通过了。

s2只是个数据类型的值,并不是String的实例化对象

 

再看下null 和 undefined的不同之处:

  • null == undifined (true) ; null === undefined (false)
  •  typeof null; //object               typeof:undefined; //undifined
  • null参与计算时会自动转换为0,undefined不会转换

  123 + null ; //123

  123 + undefined; //NAN

posted @ 2016-09-23 11:49  快饿死的鱼  阅读(532)  评论(0编辑  收藏  举报