返回

揭秘JS类型检测多种方法,掌握你就是面试高能手!

前端

数据类型是计算机编程的基础,理解和掌握数据类型对程序员来说非常重要。JS是一门弱类型语言,它并没有规定变量的类型,但是它提供了多种方法来检测变量的类型。这些方法主要可以分为以下几类:

  1. typeof运算符

    typeof运算符是检测变量类型最简单的方法。它返回一个字符串,表示变量的类型。例如:

    console.log(typeof 1); // "number"
    console.log(typeof "hello"); // "string"
    console.log(typeof true); // "boolean"
    console.log(typeof undefined); // "undefined"
    console.log(typeof null); // "object"
    

    需要注意的是,typeof运算符对于检测数组和函数的类型不准确。它总是会返回"object"。

  2. instanceof运算符

    instanceof运算符用于检测一个变量是否是某个类的实例。例如:

    function Person(name) {
      this.name = name;
    }
    
    var person = new Person("John");
    
    console.log(person instanceof Person); // true
    

    instanceof运算符也可以用于检测一个变量是否属于某个内置类。例如:

    console.log([] instanceof Array); // true
    console.log({}) instanceof Object); // true
    
  3. constructor属性

    每个对象都有一个constructor属性,它指向创建该对象的构造函数。例如:

    var person = new Person("John");
    
    console.log(person.constructor === Person); // true
    

    constructor属性也可以用于检测一个变量是否属于某个内置类。例如:

    console.log([].constructor === Array); // true
    console.log({}.constructor === Object); // true
    
  4. Object.prototype.toString()方法

    Object.prototype.toString()方法返回一个字符串,表示对象的类型。例如:

    console.log(Object.prototype.toString.call(1)); // "[object Number]"
    console.log(Object.prototype.toString.call("hello")); // "[object String]"
    console.log(Object.prototype.toString.call(true)); // "[object Boolean]"
    console.log(Object.prototype.toString.call(undefined)); // "[object Undefined]"
    console.log(Object.prototype.toString.call(null)); // "[object Null]"
    console.log(Object.prototype.toString.call([])); // "[object Array]"
    console.log(Object.prototype.toString.call({})); // "[object Object]"
    

    Object.prototype.toString()方法可以用于检测所有类型的变量。

  5. 其它方法

    除了以上几种方法外,还可以通过以下方法检测变量的类型:

    • 使用正则表达式
    • 使用ES6中的Reflect.apply()方法
    • 使用库函数

    这些方法都各有优缺点,在实际应用中可以根据需要选择合适的方法。