gpt4 book ai didi

javascript - NaN 比较返回真?

转载 作者:行者123 更新时间:2023-11-30 16:55:35 24 4
gpt4 key购买 nike

最近几天我读到 NaN 如何总是将 false 与自身进行比较,以及如何比较可能出现 NaN 的东西,现在我制作了一个 JS 来比较两个 NaN true。什么鬼?还是我比较了“NaN”字符串?

http://www.bksys.at/bernhard/JS-NaN-compare-true.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>radioactivity calculator</title>
</head>

<body>

<form name="form1">
a: <input type="text" name="a"><br>
b: <input type="text" name="b"><br>
x: <input type="text" name="x"><br>

</form>

<script type="text/javascript">

document.form1.a.value=Math.sqrt(-1);
document.form1.b.value=(1/0)/(1/0);
document.form1.x.value=(document.form1.a.value==document.form1.b.value);

</script>

</body>
</html>

最佳答案

您确实在将字符串 "NaN" 与另一个字符串 "NaN" 进行比较,后者等于 true。文本 input 元素中保存的 value 始终作为 String 类型被拉取。

解决此问题的一个简单方法是在您的值前加上 Unary Plus (+) operator 前缀将它们转换为整数值(您也可以去掉这些括号):

document.form1.x.value = +document.form1.a.value == +document.form1.b.value;

例子

document.form1.a.value = Math.sqrt(-1);
document.form1.b.value = (1/0) / (1/0);
document.form1.x.value = +document.form1.a.value == +document.form1.b.value;
<form name="form1">
a: <input type="text" name="a" size="20" value="a"><br>
b: <input type="text" name="b" size="20" value="b"><br>
x: <input type="text" name="x" size="20" value="x"><br>
</form>


注意: 正如 RobG 在他下面的评论中指出的,这里需要注意的是转换字符串值 "NaN" 很重要使用 Unary Plus 运算符将其转换为整数会直接将其转换为 NaN,因为该字符串无法复制为数值。如果您的两个 input 元素都包含值 "Foo",甚至包含两个完全不同的非数字字符串值,也会发生同样的情况。虽然此解决方案确实有效,但如果您要扩展此代码以也处理非数字值,它可能会产生意外结果。

关于javascript - NaN 比较返回真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29772649/

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