Skip to content

globalThis

globalThis 是ES2022中新增的关键字, 他指向当前运行环境的全局对象

通过使用 globalThis, 可以更方便地在 JavaScript 代码中访问全局对象, 避免了环境依赖的写法

js
if (globalThis === window) {
  console.log('globalThis === window');
}
js
if (globalThis === global) {
  console.log('globalThis === global');
}
js
if (globalThis === self) {
  console.log('globalThis === self');
}

Infinity

全局属性 Infinity 是一个数值, 表示无穷大

js
/**
 * 返回指定范围内的随机数
 * @param min - 最小值
 * @param max - 最大值
 * @returns 返回值
 */
export function range(min, max) {
  const isInf = min === Infinity || max === Infinity;
  const isInf2 = min === -Infinity || max === -Infinity;
  if (isInf || isInf2) {
    throw new RangeError('min and max must not be Infinity');
  }
  return Math.floor(Math.random() * (max - min + 1) + min);
}

NaN

NaN(Not a Number) 表示不是一个数字, 它不等同于任何值包括他自己

js
console.log(NaN === 123); // false
console.log(NaN === NaN); // false
console.log(typeof NaN); // number

// 如何判断 NaN 呢?
console.log(isNaN(NaN)); // true
console.log(Number.isNaN(NaN)); // true
console.log(Object.is(NaN, NaN)); // true

undefined

只有一个值得数据类型, 这个值就是他自己, 他表示变量已经定义但是未赋值

js
var num;
console.log(num); // undefined

function f1() {}
console.log(f1()); // undefined

var obj = {};
console.log(obj.not_defined_property); // undefined

// 如何判断 undefined 呢?
console.log(undefined === undefined); // true
console.log(null == undefined); // true

Released under the MIT License.