typeof
操作符
typeof
是一个一元操作符,可以用来检测变量的类型。它返回一个表示数据类型的字符串。
javascript
let num = 123;
let str = "hello";
let bool = true;
let undef;
let nul = null;
let obj = {};
let arr = [];
console.log(typeof num); // "number"
console.log(typeof str); // "string"
console.log(typeof bool); // "boolean"
console.log(typeof undef); // "undefined"
console.log(typeof nul); // "object" (注意:null 被认为是对象类型)
console.log(typeof obj); // "object"
console.log(typeof arr); // "object"
instanceof
操作符
instanceof
操作符用于检测构造函数的 prototype
属性是否出现在某个实例对象的原型链上。
javascript
function Person(name) {
this.name = name;
}
let person = new Person("Alice");
console.log(person instanceof Person); // true
console.log(person instanceof Object); // true
Object.prototype.toString.call()
方法
这个方法可以返回一个表示对象类型的字符串。它比 typeof
更加准确,因为它可以区分数组、日期、正则表达式等特殊对象。
javascript
let num = 123;
let str = "hello";
let bool = true;
let arr = [];
let date = new Date();
let reg = /test/;
console.log(Object.prototype.toString.call(num)); // "[object Number]"
console.log(Object.prototype.toString.call(str)); // "[object String]"
console.log(Object.prototype.toString.call(bool)); // "[object Boolean]"
console.log(Object.prototype.toString.call(arr)); // "[object Array]"
console.log(Object.prototype.toString.call(date)); // "[object Date]"
console.log(Object.prototype.toString.call(reg)); // "[object RegExp]"
Array.isArray()
方法
Array.isArray()
是一个全局函数,用于检测一个值是否是数组。
javascript
let arr = [];
let notArr = {};
console.log(Array.isArray(arr)); // true
console.log(Array.isArray(notArr)); // false
Number.isNaN()
方法
Number.isNaN()
用于检测传入的值是否是 NaN
,并且该值是数字类型。
javascript
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN("NaN")); // false
console.log(Number.isNaN(123)); // false
isNaN()
函数
isNaN()
函数用于检测传入的值是否是 NaN
,但它会先尝试将值转换为数字。
javascript
console.log(isNaN(NaN)); // true
console.log(isNaN("NaN")); // true (注意:这里会先尝试将字符串转换为数字)
console.log(isNaN(123)); // false
在实际开发中,通常推荐使用 typeof
和 Object.prototype.toString.call()
来进行类型检测,因为它们提供了更准确的结果。instanceof
适用于检测对象的构造函数,而 Array.isArray()
和 Number.isNaN()
是专门用于检测数组和 NaN
的函数。