首页 > 其他分享 >typeof 和 instanceof 判断值类型

typeof 和 instanceof 判断值类型

时间:2022-09-03 17:58:25浏览次数:57  
标签:instanceof 判断 false Object value typeof null

两者的作用

  • typeof 运算符能区分原始值和对象,并检测出原始值的类型。
  • instanceof 运算符可以检测一个对象是否是特定构造函数的一个实例。

typeof

结果
undefined 'undefined'
null 'object'
布尔值 'boolean'
数字 'number'
字符串 'string'
函数 'function'
所有其他的常规值 'object'

判断值是否为对象

判断一个值是否是对象,用 typeof 不准确,因为 null 也等于 'object'。

typeof null // object

typeof {} // object

排除掉 null:

function isObject(value) {
  return value !== null && typeof value === "object";
}

isObject(null); // false

判断值是否存在

undefined 表示“没有值”(既不是原始值也不是对象)。访问未初始化的变量、缺失的参数,以及确实的属性会返回这个值。并且如果函数中没有任何显式的返回值时,也会返回 undefined。

function isDefined(value) {
  return typeof value !== "undefined";
}

let x;

isDefined(x); // false

function f() { return; }

isDefined(f()); // false

isDefined(); // false

instanceof

对于 undefined、null,以及其他原始值都返回 false:

undefined instanceof Object // false
null instanceof Object // false
'abc' instanceof Object // false
123 instanceof Object // false

JavaScript 除了原始值以外的值的原型都是 Object:

[] instanceof Object // true
{} instanceof Object // true

isPrototypeOf(value)

value instanceof Const

instanceof 判断 value 是否由构造函数 Const 创建,所以,它检测 value 是否在 Const.prototype 的原型链上。因此下面的代码和 instanceof 是等价的:

Array.prototype.isPrototypeOf([]); // true
Object.prototype.isPrototypeOf([]); // true
Number.prototype.isPrototypeOf(new Number(123)); // true

几乎所有的对象都是 Object 的实例,也就是说这些对象的顶层原型都是 Object。Object 的原型是 null,因为它后面没有了。

标签:instanceof,判断,false,Object,value,typeof,null
From: https://www.cnblogs.com/Enziandom/p/16653172.html

相关文章