js类型判断是JavaScript编程中的一个重要环节,它可以帮助我们更好地理解变量的类型,以及编写更有效的代码。它有几种实现方式,分别是typeof操作符、instanceof操作符、Object.prototype.toString.call()方法、constructor属性以及Symbol.toStringTag属性。
typeof操作符是js中最常用的类型判断方式,它可以用来判断一个变量的类型,操作符返回的结果有7种,分别是"number"、"string"、"boolean"、"undefined"、"object"、"function"和"symbol"。使用方法如下:
let num = 1; let str = 'string'; let bool = true; let undef = undefined; let obj = {}; let func = function(){}; let sym = Symbol(); console.log(typeof num); // "number" console.log(typeof str); // "string" console.log(typeof bool); // "boolean" console.log(typeof undef); // "undefined" console.log(typeof obj); // "object" console.log(typeof func); // "function" console.log(typeof sym); // "symbol"
instanceof操作符可以用来判断一个变量是否为某个构造函数的实例,它的返回值是一个布尔值,如果变量是该构造函数的实例,则返回true,否则返回false。使用方法如下:
let arr = [1,2,3]; console.log(arr instanceof Array); // true console.log(arr instanceof Object); // true console.log(arr instanceof Function); // false
第三,Object.prototype.toString.call()方法是一种比较精准的类型判断方式,它可以用来判断任意类型的变量,返回的结果是一个字符串,格式为"[object type]",其中type是变量的类型,使用方法如下:
let arr = [1,2,3]; let obj = {name: 'John'}; let func = function(){}; let num = 1; console.log(Object.prototype.toString.call(arr)); // "[object Array]" console.log(Object.prototype.toString.call(obj)); // "[object Object]" console.log(Object.prototype.toString.call(func)); // "[object Function]" console.log(Object.prototype.toString.call(num)); // "[object Number]"
第四,constructor属性可以用来检查一个变量是否为某个构造函数的实例,它的返回值是构造函数本身,使用方法如下:
let arr = [1,2,3]; console.log(arr.constructor === Array); // true console.log(arr.constructor === Object); // false
Symbol.toStringTag属性可以用来判断一个变量的类型,它的返回值是一个字符串,表示变量的类型,使用方法如下:
let arr = [1,2,3]; let obj = {name: 'John'}; console.log(Object.prototype.toString.call(arr)); // "[object Array]" console.log(Object.prototype.toString.call(obj)); // "[object Object]"
以上就是,如果我们能够掌握这几种方式,就可以更好地编写js代码,提高代码的效率。