JavaScript 的运算符

JavaScript 有三种方法,可以确定一个值到底是什么类型。

typeof运算符

instanceof运算符

Object.prototype.toString方法

typeof 运算符:

数值、字符串、布尔值分别返回number、string、boolean。

typeof 123 // "number"
typeof '123' // "string"
typeof false  // "boolean"

利用这一点,typeof可以用来检查一个没有声明的变量,而不报错。

v// ReferenceError: v is not defined
typeof v
// "undefined"

上面代码中,变量v没有用var命令声明,直接使用就会报错。但是,放在typeof后面,就不报错了,而是返回undefined。

typeof null // "object"

typeof null返回object;

null的类型是object,这是由于历史原因造成的。1995年的 JavaScript 语言第一版,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),没考虑null,只把它当作object的一种特殊值。后来null独立出来,作为一种单独的数据类型,为了兼容以前的代码,typeof null返回object就没法改变了。

instanceof运算符:

instanceof运算符返回一个布尔值,表示对象是否为某个构造函数的实例。

var v = new Vehicle();
v instanceof Object // true
v instanceof Vehicle // true
// 等同于
Vehicle.prototype.isPrototypeOf(v)
null instanceof Object // false

只有null对象。这时,instanceof判断会失真。

*注意,instanceof运算符只能用于对象,不适用原始类型的值。

面代码中,字符串不是String对象的实例(因为字符串不是对象),所以返回false。

此外,对于undefined和null,instanceof运算符总是返回false。

var x = [1, 2, 3];var y = {};
x instanceof Array // true
y instanceof Object // true
var s = 'hello';
s instanceof String // false
undefined instanceof Object // false
null instanceof Object // false

所以,利用instanceof运算符,还可以巧妙地解决,调用构造函数时,忘了加new命令的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值