JS学习笔记——typeof、instanceof、isArray的用法

本文介绍了JavaScript中检测变量数据类型的方法,如使用typeof操作符,以及如何针对数组进行特殊判断。虽然typeof能检测Number、String、Undefined、Object、Function等类型,但无法区分Null、Array、正则和Date,此时可以借助Array.isArray()方法或instanceof操作符来判断对象是否为数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:
https://www.runoob.com/js/js-syntax.html
https://www.runoob.com/note/26685
https://www.runoob.com/w3cnote/javascript-check-arrayisobject.html

检测变量的数据类型

1、使用 typeof 操作符

JavaScript是弱类型编程语言,定义变量都使用 var 定义,与 Java 这种强类型语言有区别。在定义后可以通过 typeof 操作符来获取 JavaScript 中变量的数据类型。

对于 Number(包括NaN), String, Undefined, Object, Function 等这几种类型来说,typeof 可以检测到,比如代码如下(//后的为输出结果):

function test(){}

console.log(typeof 1); // number 通过数字字面量赋值
console.log(typeof (5+6)); // number 通过表达式字面量赋值
console.log(typeof NaN);	// number NaN的数据类型是number
console.log(typeof "yunxi"); // string 通过字符串字面量赋值
console.log(typeof undefined); // undefined
console.log(typeof {firstName:"John", age:50}); // object 通过对象字面量赋值
console.log(typeof test); // function 通过函数字面量赋值

但是对于NullArray正则Date来说,typeof 无法检测,返回的类型是一个对象Object,因为null表示一个空对象引用,而数组是一种特殊的对象类型,如下代码所示:

console.log(typeof null);		// object
console.log(typeof []);			// object
console.log(typeof /\d+/g);		// object
console.log(typeof new Date());	// object

判断对象是否为数组

typeof 操作符不能用来判断是 Array 还是 Object

var arr = [] typeof(arr) === 'object' // true

这是因为,就算变量定义的是数组格式,typeof 返回的数据类型还是 Object :

var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
document.write(typeof cars); // object

1、使用 isArray 方法

var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
// 判断是否支持该方法
if (Array.isArray) {
    if(Array.isArray(cars)) {
        document.write("该对象是一个数组。") ;
    }
}

2、使用 instanceof 操作符

var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";

if (cars instanceof Array) {
    document.write("该对象是一个数组。") ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值