这个说false,意思""是一个数字:
alert(isNaN(""));
Run Code Online (Sandbox Code Playgroud)
这个说NaN,意思""是不是数字,不能转换:
alert(parseFloat(""));
Run Code Online (Sandbox Code Playgroud)
我期待第二个代码转换""为,0因为""测试时是一个数字,IsNaN但我错了!我疯了还是我错过了什么?
parseFloat尝试从字符串中解析数字,其中 as在检查之前isNaN 将参数转换为数字:
Number("") //0 http://ecma-international.org/ecma-262/5.1/#sec-9.3.1
parseFloat("") //NaN http://ecma-international.org/ecma-262/5.1/#sec-15.1.2.3
Run Code Online (Sandbox Code Playgroud)
显然这是“损坏的”或“令人困惑的”,所以从规格来看:
ECMAScript 代码测试值 X 是否为 NaN 的可靠方法是使用 X !== X 形式的表达式。当且仅当 X 为 NaN 时,结果才为 true。
0 !== 0 // false
NaN !== NaN //true
function isExactlyNaN(x) {
return x !== x;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |