其实我正在尝试下面这个......
<!DOCTYPE html>
<html>
<body>
<p>A number divided by a non-numeric string becomes NaN (Not a Number):</p>
<p id="demo"></p>
<script>
var d = "10"; //typeof d is string
document.getElementById("demo").innerHTML = 100/d;
// or document.getElementById("demo").innerHTML = 100/"10";
</script>
</body>
</html>
输出它给我的感觉..
A number divided by a non-numeric string becomes NaN (Not a Number):
10
请解释一下为什么会这样。
谢谢..
答案 0 :(得分:3)
一元运算符将尝试将字符串转换为数字。如果字符串不能转换为数字,它只会产生NaN。
如果您尝试以下操作,您会注意到相同的内容,它将从十六进制转换为10:
100/"0xA"
答案 1 :(得分:1)
如果其中一个操作数是字符串,JavaScript将首先尝试将其转换为数字(即:“5”变为5),或者如果不成功,则返回表达式的NaN。
这就是100 /“10”给出10而不是NaN的原因。
答案 2 :(得分:0)
添加+
将变量转换为数字:
var d = "10"; //typeof d is string
document.getElementById("demo").innerHTML = 100 / +d;
// -----------------------------------------------^--
相反,您可以进行typeof
检查:
if (typeof d !== 'number') {
// ...
}