如何检查提供的值是否属于 JavaScript 中的指定类型?
以下方法介绍了如何检查提供的值是否属于 JavaScript 中的指定类型。
方法: ECMAScript 2015 (俗称ES6 )中引入的Object.is() JavaScript 方法判断两个值是否相同。
Object.is()判断两个值是否相同。如果两个值都未定义,则两个值相同,均为 null,均为 true 或均为 false,长度相同且字符顺序相同的两个字符串,均为同一对象(意味着两个值都引用内存中的同一对象),两个数字和 +0、两个 -0、两个 NaN 或两个非零且都不是 NaN 并且都具有相同的值
句法 :
Object.is(value1, value2);
参数:该方法接受以下两个参数:
- value1:它是第一个要比较的值。
- value2:第二个要比较的值。
返回值:此函数返回布尔值。
示例 1:
index.js
// Evaluation result is the same as using ===
console.log(Object.is(25, 25)); // true
console.log(Object.is('foo', 'foo')); // true
console.log(Object.is('foo', 'bar')); // false
console.log(Object.is(null, null)); // true
console.log(Object.is(undefined, undefined)); // true
console.log(Object.is([], [])); // false
var foo = { a: 1 };
var bar = { a: 1 };
console.log(Object.is(foo, foo)); // true
console.log(Object.is(foo, bar)); // false
index.js
// Signed Zero
console.log(Object.is(0, -0)); // false
console.log(Object.is(+0, -0)); // false
console.log(Object.is(-0, -0)); // true
console.log(Object.is(0n, -0n)); // true
// NAN case
console.log(Object.is(NaN, 0/0)); // true
console.log(Object.is(NaN, Number.NaN)) // true
使用以下命令运行index.js文件:
node index.js
输出:
true
true
false
true
true
false
true
false
示例 2:
index.js
// Signed Zero
console.log(Object.is(0, -0)); // false
console.log(Object.is(+0, -0)); // false
console.log(Object.is(-0, -0)); // true
console.log(Object.is(0n, -0n)); // true
// NAN case
console.log(Object.is(NaN, 0/0)); // true
console.log(Object.is(NaN, Number.NaN)) // true
使用以下命令运行index.js文件:
node index.js
输出:
false
false
true
true
true
true
Object.is() 和 === (严格等式)之间的主要区别
- Object.is(+0,0) 为假,Object.is(NaN,NaN) 为真。
- 所以 Object.is() 只是 === 对于负零 -0 和 NaN 具有不同的行为。
注意:作为 ES6 特性,它可能不被旧浏览器支持,但可以使用 Babel 实现兼容性。