重学JS之类型判断

39 阅读1分钟

1. typeof判断基本类型

使用typeof只能判断基本数据类型,这里需要特别注意,typeof null 返回的是object

        console.log(typeof 123); // number
        console.log(typeof '123'); // string
        console.log(typeof true);   // boolean
        console.log(typeof undefined); // undefined
        console.log(typeof null);   // object
        console.log(typeof {});     // object
        console.log(typeof []);     // object
        console.log(typeof function(){});   // function
  1. instanceof 判断引用数据类型,是用来判断是否是某一个构造函数的实例
        console.log('df' instanceof String); // false
        console.log(123 instanceof Number); // false

        class Person {

            constructor(name) {
                this.name = name;
            }
        }
        let p = new Person('zhangsan');

        console.log(p instanceof Person);   // true

        const arr = [1,2,3];
        console.log(arr instanceof Array); // true
  1. 直接判断使用 Object.prototype.toString.call(val)
        function typeName(val) {
            return Object.prototype.toString.call(val).slice(8, -1);
        }

        console.log(typeName([23,23]));
  1. 使用 Array.isArray() 方法
  • 专门用于判断一个值是否为数组。
console.log(Array.isArray([])); // true 
console.log(Array.isArray({})); // false