为什么 isNaN 总是返回 true
why does isNaN always return true
在尝试验证JS中的数字字符串时遇到一些麻烦。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>No Quirks!</title>
</head>
<body>
<h1>JavaScript Test</h1>
<button onclick="myNanIsTrue()">Is it a number?</button>
<p id="writeToHTML"></p>
<script type="text/javascript">
function myNanIsTrue() {
var g = parseInt("40000000") + "<br />";
var n = g;
if (isNaN(g)){
g="moo!";
}
n += g + "<br />";
document.getElementById("writeToHTML").innerHTML = n;
}
</script>
</body>
</html>
尝试了几种排列,但它似乎不起作用。谁能看出为什么这不起作用?
你写过:
var g = parseInt("40000000") + "<br />";
因此g
是一个字符串:'40000000<br />'
。
parseInt("40000000")
返回一个整数,但随后您将一个字符串附加到该整数。Javascript 隐式地将数字转换为字符串,然后将它们连接起来。
字符串不是数字,因此isNaN
(正确)返回true
。
isNaN 表示不是数字。这意味着它是一个检查变量是否不是数字的函数。在您的情况下,您将<br>
连接到整数,这会将您的整数转换为字符串。
/**
* Created by jjansen on 10-Mar-15 4:38 PM.
* stackoverflow
*/
var noNumber = parseInt("40000") + "<br>"; //this is now a String
var test = isNaN( noNumber ); //returns true
console.log("noNumber isNaN: " + test);
var number = parseInt("40000"); //this is a integer
test = isNaN( number );
console.log("number isNaN: " + test);
按 F12 并在控制台中复制此代码。您现在可以看到差异
因为g
是一个字符串(你正在连接一个字符串,所以它将被转换为一个)。
在代码中,由于构建 g
的方式,它的值将始终是一个字符串。
每当将String
和Number
相加时,通过连接这两个值,您将获得一个新的String
。
因此,在您的代码中,isNaN(g)
将始终返回 true
。
相关文章:
- 对于loop.if-仅在经过所有间隔后返回true
- 如果函数返回True,则显示Javascript按钮
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 过滤器返回true或false
- 我对“;返回true"嵌套函数内部;t工作
- 如何在成功输入时使“返回TRUE”
- 检查一个元素是否有一个类与另一个类总是返回true
- JavaScript函数未返回true
- 如果URL中有任何字符串变体匹配,则返回true
- 如何使以下函数返回true或false
- 使用“in”关键字检查 0 始终返回 true
- hasOwnProperty 在对照父对象属性进行检查时返回 true
- 为什么 isNaN 总是返回 true
- _.数组中的每个查找值都返回 true 或 false.使用下划线 JS
- 错误地返回true
- 为什么asp:LinkButton服务器端事件没有'当clientClick返回true时,t激发
- 阻止表单提交 javascript 为什么有一个明显的错误语句返回 true
- Node js命令器args返回true而不是值
- 如何将html表单与php链接,以便在例如单击按钮时返回true
- 从OnClientClick调用函数时,在JavaScript中返回true