parseInt 在事件上的奇怪行为[重复]

Posted

技术标签:

【中文标题】parseInt 在事件上的奇怪行为[重复]【英文标题】:Strange behaviour of parseInt on event [duplicate] 【发布时间】:2020-09-12 03:39:17 【问题描述】:

我有一个需要同时接受数字和事件的函数。如果发生事件,我将从目标元素的属性中提取该数字。像这样的...

function f(num) 
    if(parseInt(num) == NaN) 
        num = num.target.num
    
    // Do something with num

parseInt(event) 的结果是NaN。但奇怪的是parseInt(event) == NaNparseInt(event)===NaN 的结果是false

有人能解释一下这里发生了什么吗?

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>


<button onclick="f()">Click me</button>
<p>parseInt(event): <span id="a"></span></p>
<p>parseInt(event)==NaN: <span id="b"></span></p>

<script>
function f(event)
  document.getElementById("a").innerHTML = parseInt(event)
  document.getElementById("b").innerHTML = (parseInt(event)==NaN)

</script>
</body>

</html>

【问题讨论】:

不要用== 测试NaN,改用isNaN() (link to doc) 【参考方案1】:

NaN 将不相等(通过 ==、!=、=== 和 !==)与任何其他值进行比较——包括另一个 NaN 值。使用 Number.isNaN() 或 isNaN() 最清楚地确定一个值是否为 NaN。

详细解释,请访问:-

https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Global_Objects/NaN

【讨论】:

以上是关于parseInt 在事件上的奇怪行为[重复]的主要内容,如果未能解决你的问题,请参考以下文章

MariaDB 5.5.60 上的奇怪零行为(双重)[重复]

parseInt() 发生了一些奇怪的事情[重复]

滚动时 UITableViewCell 的奇怪行为,UIButtons 消失

UIView ExclusiveTouch:UIBarButtonItem 的奇怪行为

Chrome中单个帧中的重复事件

UNION 语句相同的选定值 - 奇怪的行为 [重复]