【主题思想】实现方式、isNaN() VS 正则
请给字符串扩展一个 isNumber 方法,判断字符串是否是数值字符串,例如
a'.isNumber() // false
'0'.isNumber() // true
'1e10000'.isNumber() // true
'12px'.isNumber() // false
'3.141592653'.isNumber() // true
'NaN'.isNumber() // false
' '.isNumber() // false
PS:以上题目来着内部JS小测
正则
var isNumber = function(str) {
return /^[\d|\.]*$/g.test(str);
}
// 'a'.isNumber() // false
// '0'.isNumber() // true
// '1e10000'.isNumber() // fasle
// '12px'.isNumber() // false
// '3.141592653'.isNumber() // true
// 'NaN'.isNumber() // false
// ' '.isNumber() // false
// '0xae'.isNumber() // false
isNaN()
var isNumber = function(str){
return !isNaN(str);
}
// 'a'.isNumber() // false
// '0'.isNumber() // true
// '1e10000'.isNumber() // true
// '12px'.isNumber() // false
// '3.141592653'.isNumber() // true
// 'NaN'.isNumber() // false
// ' '.isNumber() // false
// '0xae'.isNumber() // true
正则 VS isNaN()
isNaN()✅
对于八进制or科学计数法(例如0xae
、1e10000
),isNaN()方法的判断依旧是符合预期的,而正则会有误
isNaN()
会判断某个参数是不是NaN,如果传参是NaN,返回true,否则返回false,在这个过程中会出强制转换。