为何isNaN()对含字母的数字字符串处理结果不同?以1e0与10e为例
为什么isNaN("1e0")返回false,isNaN("10e")返回true?
isNaN()函数的核心逻辑是:先尝试把传入的参数转换为数字,若转换结果为NaN则返回true,否则返回false。
两种情况的具体分析:
isNaN("1e0")返回false:"1e0"是符合ECMAScript规范的科学计数法格式,e代表10的幂次,1e0等价于1 * 10^0,计算结果为数字1。isNaN()处理该字符串时,能成功将其转换为有效数字1,不是NaN,因此返回false。isNaN("10e")返回true:"10e"是不合法的科学计数法格式,规范要求e后面必须跟随整数(正负数均可),而该字符串中e后没有任何数字,无法转换为有效的数字,转换结果为NaN,所以isNaN()返回true。
内容的提问来源于stack exchange,提问作者chickpea
相关产品推荐
相关产品推荐

