【问题标题】:Are null and Infinity interchangeable in Javascript?Javascript中的null和Infinity可以互换吗?
【发布时间】:2021-12-16 13:20:15
【问题描述】:

我在这个对象上将max 设置为Infinity

let RANGE_DEFAULT_OPTIONS: any = { min: 0, max: Infinity };
console.log(RANGE_DEFAULT_OPTIONS); // {min: 0, max: null}

RANGE_DEFAULT_OPTIONS 对象被记录时,它会为max 属性记录null

Here's the Stackblitz Demo

这也会记录true:

console.log(RANGE_DEFAULT_OPTIONS.max === Infinity);

那么Infinitynull 可以互换吗?

【问题讨论】:

  • RANGE_DEFAULT_OPTIONS.max === null 在你的堆栈闪电战中返回 false
  • @jabaa 良好的观察。我不能总是相信我的眼睛:)

标签: javascript typescript


【解决方案1】:

不,他们不是。

通常,console.log(…) 使用对象调用,会完整地打印对象:

const obj = { min: 0, max: Infinity };

console.log(obj);

在 StackBlitz 的情况下,可能有人在下面的某个地方调用了 JSON.stringify(…),这把事情搞砸了(这很可悲,IMO):

【讨论】:

【解决方案2】:

这是您可以在浏览器中运行的 sn-p 中的相同代码。如您所见,Infinitynull 不相等。

let RANGE_DEFAULT_OPTIONS = { min: 0, max: Infinity };
console.log(RANGE_DEFAULT_OPTIONS);
console.log('strict equality', Infinity === null);
console.log('loose equality', Infinity == null);

【讨论】:

  • 它在 stackblitz 中产生null
猜你喜欢
  • 1970-01-01
  • 2013-03-06
  • 2012-12-29
  • 2017-12-08
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多