typeof 与instanceof

189 阅读1分钟

typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的

typeof运算符返回一个用来表示表达式的 数据类型 的字符串

    let num = 1
    let str = '小明'
    let bolean = true
    let arr = [1,2,3]
    let obj = {
        name: 'hello World'
    }
    
    console.log (typeof num);   //number
    console.log (typeof str); //string
    console.log (typeof bolean);  //boolean
    
    console.log (typeof arr);  //object
    console.log (typeof obj);  //object
    console.log (typeof null);  //object
    console.log (typeof undefined);  // undefined

我们可以使用 typeof 来获取一个变量是否存在

    iftypeof a != undefined){  //如果变量没有声明 typeof a 为 undefined,并没有报错
        
    }
    
    if(a){  //如果变量没有声明代码会报错     a is not defined
        
    }

并且通过以上例子可以看出数组和对象用typeof返回的竟然都是object?????

真相来了: 发现在使用 typeof 运算符时采用**引用类型**存储值会出现一个问题,无论引用的是什么类型的对象object,
这是typeof的局限性。

不过依然还是可以通过typeof判断某个变量是否为数组

let arr = [1,2,3]
console.log (typeof arr.length);  //number    判断是number类型就可以区分是数组啦

instanceof 运算符用来测试一个判断一个对象是否为某一数据类型,或对象在其原型链中是否存在一个构造函数的 prototype 属性,返回的是一个布尔值。

instanceof 用于判断一个变量是否某个对象的实例,
    function Fun (){    //声明一个构造函数
    }
    let a = new Fun()  //构造函数的实例
    console.log(a instanceof Fun);  // 判断a是否是Fun的实例      结果:true

原文参考:www.cnblogs.com/Trr-9846881…