饥人谷技术博客js

typeof和instanceof的作用和区别

2017-04-05  本文已影响743人  辉夜乀

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

typeof 运算符

最常用的是 typeof 运算符,返回一个值的数据类型有以下几种结果。

  1. 原始类型
  2. 函数
  3. undefined
  4. object

1.原始类型

数值、字符串、布尔值分布返回 numberstringboolean

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

2.函数

函数返回function

function f() {}
typeof f
// "function"

3. undefined

undefined 和没有用 var 声明的变量,用typeof 返回的是 undefined

typeof undefined
// "undefined"
var x
typeof x
// "undefined"
y
// ReferenceError: y is not defined
typeof y
// "undefined"

这里y没有用var声明,直接使用就会报错,但是用typeof就不报错,而是返回undefined。
实际编程中,这个特点通常用在判断语句。

// 错误的写法
if (v) {
  // ...
}
// ReferenceError: v is not defined

// 正确的写法
if (typeof v === "undefined") {
  // ...
}

4.object

除了以上三种情况,其他情况都返回object

typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"

注意

instanceof 运算符

instanceof 是判断变量是否为某个对象的实例,返回值为truefalse

var o = {};
var a = [];

o instanceof Array // false
a instanceof Array // true
a instanceof Object // true

typeof 对数组 [] 和对象 {} 的返回值都是Object,无法区分数组和对象,但是instanceof可以区分。
注意: 数组Array是对象Object的一个子类,所以 a instanceof Object的返回值是 true

上一篇下一篇

猜你喜欢

热点阅读