从用户输入中,我收到一个必须包含数字的字符串。0
和空字符串必须区别对待。
我做了这个简短的案例研究
0 == "" // true
parseInt(0) == "" // true
parseInt("") // NaN
parseInt("") == "NaN" // false
parseInt("") == NaN // false
typeof parseInt("") // "number"
通过一些额外的研究,我提出了这个解决方案(考虑uInput
到用户输入)
function userInput(uInput){
var n = parseInt(uInput);
if (isNan(n))
// empty string
else
// 0 or number
}
看起来它能够在 Google Chrome 中正确区分 0 和空字符串。
我想知道的是:
- 这是最好/最有效的解决方案吗?
- 这个解决方案在任何浏览器中都兼容吗?
- 这甚至是一个解决方案吗?有没有什么办法
n
可以变成数字以外的东西(考虑uInput
可以是任何类型的字符串)?
我不会问这个,但由于空字符串和 0 被视为相同(?!)我不知道我的代码可能暴露在哪些其他漏洞中。