gpt4 book ai didi

Javascript 测试值不变

转载 作者:行者123 更新时间:2023-11-30 11:13:25 25 4
gpt4 key购买 nike

在我的代码的某些点上,我需要知道该值是否已更改。

像这样:

let a = {x:func1()};
let old_x = a.x;
func2(a);

if(x === old_x)
console.log(`x wasn't changed`);
else
console.log(`x is changed`);

这段代码工作了一段时间,但我遇到了“NaN”对于 NaN 规范说 NaN !== NaN 会给出“真”...好吧,这让我很惊讶,现在我想知道:

  • 在 JavaScript 中是否有统一的方法来比较两个值是否相同?
  • 'NaN' 是 JavaScript 中唯一的特例吗?以下条件是比较两个值是否相等的安全方法?

    x === old_x || isNaN(old_x) && isNaN(x)

注意:对于我的情况,“相同”意味着

1 === 1 => true
null === null => true
undefined === null => false
undefined === undefined => true
NaN === NaN => true
'0' === 0 => false
Infinity === Infinity => true
...etc

对象、数组、函数和其他“引用类型”通过引用进行比较:即

let a = b = {}
a === b => true
but
a === {} => false

最佳答案

Is 'NaN' the only one special case in Javascript and the following condition is a safe to compare two values for equallity?

是的,没错。对于比较值 NaN 是唯一的异常(exception),对于比较两个变量/属性,例如:

 a === a

can be fun

关于Javascript 测试值不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52654387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com