关于isNaN()函数的细节
根据《JavaScript高级程序设计》的解释,NaN,即非数值(Not a Number),用于表示一个本来要返回数值的操作数未返回数值的情况,例如5/0就会得到NaN。
而因为NaN的一个特性是不与任何数值相等,包括它自己,所以也就不能使用==或者===来判断一个数据是否为NaN。所以isNaN()函数就有必要了。
对于isNaN(value),当value为非数字值时返回true,否则返回false。
但是,当进行测试时发现,对于isNaN("2");这样的,返回值为false,也就是说字符串"2"是数字值。为什么?
根据MDN中对isNaN()函数的解释,在对参数value进行检测前,isNaN()对value进行了强制类型转换,相当于进行了一次Number(value)。
Number()函数:把对象的值转换为数字,如果没有提供参数,则返回0。
如果参数是 Date 对象,Number() 返回从 1970 年 1 月 1 日至今的毫秒数。
对于含有数字的字符串,只有当字符串中只包含数字(十进制或十六进制)时才可以转换为数字,空字符串转换为0,其他情况(字符间有空格,有其他字符等),则会返回NaN。
对于对象,先调用valueOf()方法,然后再转换。
另外,parseInt()函数也可以解析一个字符串,并返回一个整数。但是与Number()有所不同。例如,Number("100px");会返回NaN,而paeseInt("100px");则会返回100。这些不同之处在做一些条件验证的时候可能有用。
Number()在转换字符串时比较复杂而且不够合理,所以处理整数更多用的是paeseInt()(它更多地看字符串是否符合数值模式),在使用paeseInt()时应当在第二个参数位置指定基数,避免一些不同版本ES带来的错误。
学习资料:
《JavaScript高级程序设计》
MDN文档
菜鸟教程
关于isNaN()函数的细节的更多相关文章
- JavaScript isNaN() 函数
定义与用法: isNaN() 函数用于检查其参数是否是非数字值. 语法: isNaN(x) 描述: x是要检测的值. 返回值: 如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返 ...
- JavaScript之isNaN()函数讲解
定义和用法 isNaN() 函数用于检查其参数是否是非数字值. 语法 isNaN(x) 参数 描述 x 必需.要检测的值. 返回值 如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的 ...
- NaN属性,isNaN函数
NaN:Not a Number,顾名思义,表示不是一个数字. 可以把 Number 对象设置为该值,来指示其不是数字值. 使用 isNaN() 全局函数来判断一个值是否是 NaN 值 详见 Java ...
- 数字操作 转为false的类型 typeof操作符 isNaN函数
console.group('数字操作'); // 浮点数值的内存空间是整数的两倍: // 会alert出来3e-7;从小数点后面6个0开始,就用科学计数法了: //alert(0.0000003); ...
- isNaN() 函数用于检查其参数是否是非数字值。如果是非数字值则返回true
isNaN() 函数用于检查其参数是否是非数字值.如果是非数字值则返回true.document.write(isNaN(0)); falsedocument.write(isNaN("He ...
- 用isNaN函数来判断是否只能输入正负数字
isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果, 以判断它们表示的是否是合法的数字.当然也可以用 isNaN() 函数来检测算数错误,比如用 0 作除数的 ...
- JS isNaN()函数
1.作用 isNaN() 函数用于检查其参数是否是非数字值. 2.JS <script> document.write(isNaN(123)); document.write(isNaN( ...
- IsNumeric 判断字符串是否为数字(使用Val函数实现),这个函数相当于Java的IsNaN函数
IsNumeric 判断字符串是否为数字,如果是数字返回true,如果包含有汉字或字符的话返回false. 由于Delphi本身没有IsNumeric这个函数,不像其它语言,这个函数相当于Java的I ...
- eval函数和isNaN函数
(一)eval函数定义:eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. (二)语法:eval(string)string必需. (三)返回值:通过计算 string ...
随机推荐
- vue的事件处理梳理
一.事件函数 1.v-on绑定click,执行一个函数 <input type="button" v-on:click="test" value=&quo ...
- node重新加载模块
delete require.cache[require.resolve('module name')]; var my_module = require('module name');
- java_24.1文件流的应用--复制文件
注意:先开的流要最后关 用字节流传输 public class Demo { public static void main(String[] args){ FileInputStream fis = ...
- 20175234 2018-2019-2 《Java程序设计》第七周学习总结
目录 20175234 2018-2019-2 <Java程序设计>第七周学习总结 教材学习内容总结 String类常用用法 Date类与Calendar类常用用法 Math类的常用方法 ...
- Java-Oracle数据库连接
Oracle数据库先创建一个表和添加一些数据,下面是连接数据库的具体实现.(导入jar包:ojdbc14.jar) import java.sql.Connection; import java.sq ...
- GarageBand mac怎么剪切音频片段? GarageBand mac使用教程
garageband mac智能控制轻松修饰声音资源库中任何乐器的音色,让你在世界各地都可以开始你的创意,让世界听到你的歌声.GarageBand mac剪切音频片段的操作小伙伴们也是需要掌握的,Ga ...
- GUI学习之四——QWidget控件学习总结
上一章将的QObject是PyQt里所有控件的基类,并不属于可视化的控件.这一章所讲的QWidget,是所有可视化控件的基类. QWidget包含下面几点特性 a.控件是用户界面的最小的元素 b.每个 ...
- [AI]SKLearn章1 快速入门
SciKit learn的简称是SKlearn,是一个python库,专门用于机器学习的模块. SKlearn包含的机器学习方式: 分类,回归,无监督,数据降维,数据预处理等等,包含了常见的大部分机器 ...
- [Hadoop]Hadoop章2 HDFS原理及读写过程
HDFS(Hadoop Distributed File System )Hadoop分布式文件系统. HDFS有很多特点: ① 保存多个副本,且提供容错机制,副本丢失或宕机自动恢复.默认存3份. ② ...
- python爬虫-上期所持仓排名数据爬取
摘要:笔记记录爬取上期所持仓数据的过程,本次爬取使用的工具是python,使用的IDE是pycharm 一.查看网页属性,分析数据结构 在浏览器中打开上期所网页,按F12或者选择表格文字-右键-审查元 ...