一些总结1

使用typeof对变量进行类型判断的时候,只能进行5种基本类型的判断以及1种引用类型的判断,即undefined、null、String、Boolean、Number、Object。

注意区分undefined与null的区别: undefined是一个变量未进行初始化 var a; console.log(a) //undefined

而null是一个空对象指针,即null为一个对象 console.log(typeof null) //object

注意一点的是:使用typeof对一个未定义和未初始化的变量进行判断时都是undefined

这里只定义变量a而未定义变量b 但是用typeof进行类型检测都是undefined
1
let a 2 console.log(typeof a) //undefined 3 console.log(typeof b) //undefined

所以我们在对变量进行定义的时候需要注意:

若是定义一个变量需要

空对象 var obj=null

空字符串 var str=''

数字 var num=0

布尔值 var bool=true

若不知道即将定义的变量是什么类型 var a

这样不仅使代码更容易理解不易出错,浏览器解析也会更优。

但typeof的局限性就在于对引用类型进行判断的时候只能是object,包括Object、Array、Function、RegExp....

所以我们使用instanceof运算符,来检测变量是否为某种确定的引用类型,返回一个bool值true/false

 1     let reg=/[1,2]/
 2     let obj={}
 3     let arr=[]
 4     console.log(obj)
 5     console.log(reg instanceof RegExp)  // true
 6     console.log(obj instanceof Object)  // true
 7     console.log(arr instanceof Array)   // true
 8 但是值得注意的是,instanceof其实判断的是后者的原型有没有出现在前者的原型链上。即判断Object.prototype有没有出现在obj的__proto__上,所以当前者没有原型链的时候不能判断
 9 
10 console.log(null instanceof Object)  //false
11 由于null只是一个空对象指针,没有原型链,所以结果为false

 

posted @ 2019-09-24 09:46  温润如玉Ayu  阅读(153)  评论(0编辑  收藏  举报