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代码,提高代码的效率。