NaN 及 数值转换

非数值,一种特殊的数值

console.log(+0 === -0) // true
console.log(0 / 0) // NaN
console.log(1 / 0) // Infinity
console.log(-1 / 0) // -Infinity
console.log(1 == true);  // true

NaN特点
任何涉及NaN的操作都会返回NaN;
NaN与任何值都不相等,包括自己。

console.log(NaN == NaN)
image.png

针对这两个特点,ECMAScript定义了isNaN()函数。这个函数可以接受一个参数,帮我们确定这个参数是否“不是数值”,这个函数在接受一个参数值后,会尝试把它转换为数值,不能转换为数值的值,在这个函数中会返回true。

    console.log(isNaN(NaN));  // true
    console.log(isNaN(10)); // false
    console.log(isNaN("10")); // false
    console.log(isNaN("red")); // true
    console.log(isNaN(true)); //false(可以被转换成数值1)
数值转换(Number / parseInt / parseFloat)

Number可以用于任何数据类型,另外两个专门用于转换字符串

Number(true) === 1 // true
Number(null) === 0 // true
Number(undefined) // NaN

parseInt('123abl') // 123
Number('123abl') // NaN

console.log(parseInt('')) // NaN
console.log(Number('')) // 0

console.log(parseInt(22.3)) // 22
console.log(Number(22.3)) // 22.3

对于八进制,ECMAScript3 和ECMAScript 5有争议
parseInt(070)  --> 56(ECMAScript3)
parseInt(070)  --> 70(ECMAScript5)

parseInt有两个参数,第二个参数表示使用多少进制

parseFloat只用于十进制,如果是十六进制,转为0


toString

null和undefined没有这个方法,默认一个参数,表示转换为多少进制的数,如果不知道是不是null或undefined,使用String方法

加法

Infinity + (-Infinity) // NaN
5 - true // 4
NaN - 1 // NaN
5 - '' // 0 (空被转换成0)
5 - null // 5 (null被转换成0)

undefined == 0  // false
null == 0 // false
  • 扩展:

由于内存的限制,,js的数值中正负无穷分别保存在Number.MAX_VALUENumber.MIN_VALUE

console.log(Number.MAX_VALUE)

正无穷
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第1章 JavaScript 简介 JavaScript 具备与浏览器窗口及其内容等几乎所有方面交互的能力。 欧洲...
    力气强阅读 1,172评论 0 0
  • 什么是 JavaScript 语言? JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”(script...
    oWSQo阅读 1,818评论 0 1
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,268评论 0 4
  • 变量 声明变量 命名变量区分大小写的语言第一个字符是字母或下划线_,数字不能作为第一个字符字符必须是字母,数字或者...
    flyingtoparis阅读 834评论 0 0
  • 几个月前重构了KeepGank的代码,没有发布,这次正式的宣传一下。 本次重构主要做了以下工作: 整体代码按模块功...
    Anderson大码渣阅读 1,735评论 0 27