gpt4 book ai didi

javascript - (a== 1 && a ==2 && a==3) 可以评估为真吗?

转载 作者:IT老高 更新时间:2023-10-28 11:09:37 25 4
gpt4 key购买 nike

Moderator note: Please resist the urge to edit the code or remove this notice. The pattern of whitespace may be part of the question and therefore should not be tampered with unnecessarily. If you are in the "whitespace is insignificant" camp, you should be able to accept the code as is.

(a== 1 && a ==2 && a==3) 是否有可能在 JavaScript 中计算为 true

这是一家大型科技公司提出的面试问题。它发生在两周前,但我仍在努力寻找答案。我知道我们在日常工作中从未编写过这样的代码,但我很好奇。

最佳答案

如果您利用 how == works ,您可以简单地使用自定义 toString(或 valueOf)函数创建一个对象,该函数会在每次使用时更改返回的内容,从而满足所有三个条件。

const a = {
i: 1,
toString: function () {
return a.i++;
}
}

if(a == 1 && a == 2 && a == 3) {
console.log('Hello World!');
}


之所以可行,是因为使用了松散相等运算符。使用松散相等时,如果其中一个操作数的类型与另一个不同,引擎将尝试将一个操作数转换为另一个。对于左侧的对象和右侧的数字,它将尝试通过首先调用 valueOf 将对象转换为数字,如果它是可调用的,如果失败,它将调用 toString。在这种情况下,我使用 toString 只是因为想到的是,valueOf 会更有意义。如果我改为从 toString 返回一个字符串,然后引擎会尝试将该字符串转换为一个数字,从而为我们提供相同的最终结果,但路径稍长。

关于javascript - (a== 1 && a ==2 && a==3) 可以评估为真吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48270127/

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