码迷,mamicode.com
首页 > 其他好文 > 详细

typeof与instanceof比较+undefined与null各种值的相互比较

时间:2019-09-16 23:17:30      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:class   表达   数值   类型   boolean   style   数组   typeof   nan   

1、typeof:返回一个字符串

根据typeof判断对象
表达式                          返回值
typeof undefined           ‘undefined‘
typeof true                   ‘boolean‘
typeof 123                   ‘number‘
typeof "abc"               ‘string‘
typeof function() {}       ‘function‘

typeof {}                   ‘object‘
typeof []                   ‘object‘
typeof null                   ‘object‘

function f(...args) {
    console.log(typeof args); //object
  
console.log(args instanceof Array); //true
}

总结:typeof返回值是一个字符串,该字符串说明运算数的类型,一般只返回一下六种:

number、string、Boolean、undefined、function、object(null、对象、数组)

对于数组、对象以及null,返回值都为object,这正是typeof的局限性。

2、instanceof:用于判断一个变量是否为某个类的实例

    var a = [];
    console.log(a instanceof Array); //true
    console.log(a instanceof Object); //true
以上两个结果都为true,因为Array是Object的子类。

    function test(){};
    var a = new test();
    console.log(a instanceof test) // true

3、null与undefined比较

以下结果涉及到以下类型转换:
    console.log("++++++++++++++++++++++++++++++++++")
    console.log(Boolean([]));//true
    console.log(Boolean({}));//true
    console.log(Number([]));//0
    console.log(Number({}));//NAN

在进行判断的时候,首先对等号左右进行数值转换!!!

    console.log(undefined === undefined);//true
    console.log(null === null);//true
    console.log(undefined === null);//false
    console.log(undefined == null);//true
总结:undefined、null与自己比较返回true;两者比较,相等但不全等。

    console.log("=====================");
    console.log(undefined == false);//false
    console.log(undefined == true);//false
    console.log(null == false);//false
    console.log(null == true);//false
总结:undefined、null既不等于true,也不等于false。

    console.log("======================");
    console.log(false == 0);//true
    console.log("======================");
    console.log(null == 0);//false
    console.log([] == 0);//true
    console.log({} == 0);//false
总结:空数组与0相等;但是空对象与0不相等。

    console.log("======================");
    console.log(null == false);//false
    console.log([] == false);//true
    console.log({} == false);//false
总结:空数组与0相等,false与0相等,所以空数组等于false;空对象与0不相等,false与0相等,所以空对象与false不相等。

    console.log("======================");
    console.log(([])?true:false);//true
    console.log(({})?true:false);//true
    console.log(([]==false)?true:false);//true
    console.log(({}==false)?true:false);//false

 

typeof与instanceof比较+undefined与null各种值的相互比较

标签:class   表达   数值   类型   boolean   style   数组   typeof   nan   

原文地址:https://www.cnblogs.com/minyDong/p/11530715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!