[TOC]
>[success] # Number类型
八进制:逢八进1
十进制:即1.满十进一,满二十进二,以此类推....
>[success] ## 浮点数值
~~~
所谓'浮点数',就是该'数值中必须包含一个小数点,并且小数点后面必须至少有一位数字'
var floatNum1 = 1.1;
var floatNum2 = 0.1;
var floatNum3 = .1; // 有效但是不推荐
'浮点数值占用内存空间是整数值得2倍',所以下面的写法会自动转换成整数
var floatNum1 = 1.;
var floatNum2 = 10.0;
~~~
<br/>
>[success] ## 数值范围
~~~
由于内存的限制,如果js中出现的值特别小就会是'-Infinity(负无穷)',特别大的话就是'Infinity(正无穷)',如果经过某次
计算返回了正或负的 Infinity值,那么该值无法继续进行下一次计算。
console.log(Number.NEGATIVE_INFINITY) // 负无穷
console.log(Number.POSITIVE_INFINITY) // 正无穷
'isFinite()'方法会检测一个数值是否为正(负)无穷数,如果是的话返回false
console.log(isFinite(Number.NEGATIVE_INFINITY)) // false
console.log(isFinite(Number.POSITIVE_INFINITY)) // false
~~~
<br/>
>[success] ## NaN
~~~
在其他语言中任何数值除以非数值都会导致错误,从而停止代码执行,但是'js中任何数值除以非数值都会返回NaN',因此不会影响
其他代码的执行
NaN与任何数字都不相等,包括自己
console.log(NaN == NaN) // false
~~~
<br/>
>[success] ## isNaN判断是否为数字
~~~
变量的值为'NaN'用'typeof'检测的结果也是'number'类型,'isNaN'可以用来判断是否为数字
~~~
~~~
isNaN等于number类型的值都会返回false,但是如果isNaN(false),他就会返回false,这样就就错了,所以要像下面这样写:
if(typeof a === 'number' && isNaN(a) === false){
alert('等于数字')
}else{
alert('非数字')
}
console.log(isNaN(NaN)) // true
console.log(isNaN(10)) // false(10是一个数值)
console.log(isNaN("10")) // false(可以被转换成数值10)
console.log(isNaN("blue")) // true(不能转换成数值)
console.log(isNaN(true)) // false(可以被转换成数值1)
~~~
<br/>
>[success] ## isNaN判断对象是否为空对象
之前在 [Null类型篇章](https://www.kancloud.cn/wangjiachong/javascript/1272737) 说过用来判断 “ 是否存在null的方法 ” 来确认这个变量中是否存在对象,其实isNaN也适用于对象,可以用来判断对象是否有值,如下:
~~~
var a = null // false
var a = {} // true
console.log(isNaN(a))
~~~
<br/>
>[success] ## 数值转换
~~~
有'3'个函数可以把'非数值转换为数值':Number()、parseInt()、parseFloat()
~~~
<br/>
>[success] ### Number()方法
Number()可以用于任何数据类型
| 数据类型 | Number()转换后 |
| --- | --- |
| Boolean | true 和 false 被转换成 1 和 0 |
| Number | 只是简单的传入和返回 |
| null | 0 |
| undefined | NaN |
| string | 1. 如果字符串只包含数字,‘123’ 会被转换成 123<br/>而‘011’会变成 11 <br/><br/>2. 浮点数 ‘0.1’ 也会被转换为 0.1 ,‘01.1’ 转换为 1.1 <br/><br/> 3. 十六进制也会转换为数字‘0xf’转换为 15 <br/><br/> 4. 空字符串转换为0 <br/><br/> 5. 如果以上的都没有转换结果为NaN |
| Object | NaN |
举例:
~~~
var num1 = Number('哈哈哈') // NaN
var num2 = Number('') // 0
var num3 = Number('0011') // 1
var num4 = Number(true) // 1
~~~
<br/>
>[success] ### parseInt()方法
parseInt()适用于 ' 整数 '
~~~
console.log(parseInt(' 123 ')) // 123 ,parseInt会忽略字符前后的空格
console.log(parseInt('')) // NaN
console.log(parseInt('0xA')) // 10(十六进制数)
console.log(parseInt('22.5')) // 22
console.log(parseInt('070')) // 56(八进制数) 这里书上说是56,但是打印结果却是70
console.log(parseInt('70')) // 70(十进制数)
如果已知值是'十六进制格式的字符串'
parseInt('0xAF', 16) // 175
parseInt('AF', 16) // 175 16进制可以简写
parseInt('AF') // NaN
~~~
- Javascript基础篇
- Array数组
- 数组插入值
- filter()
- forEach()
- push()
- pop()
- unshift()
- shift()
- valueOf()
- 面向对象思想
- Javascript 面向对象编程(一):封装
- Javascript面向对象编程(二):构造函数的继承
- Javascript面向对象编程(三):非构造函数的继承
- 解构
- 数组的解构赋值
- 对象的解构赋值
- 函数参数解构
- 字符串的解构赋值
- 数值和布尔值的解构赋值
- 圆括号问题
- 字符串.
- split()
- charAt()
- charCodeAt()
- concat()
- indexOf()
- lastIndexOf()
- match()
- replace()
- includes()
- 初识递归
- 渲染ul-li树形结构
- 异步函数解决方案
- 1. callback回调函数
- 2. ES6 - Promise
- JavaScript高级程序设计(书)
- 在html中使用JavaScript
- script标签的位置
- 延迟脚本
- 异步脚本
- <noscript>元素
- 基本概念
- 严格模式
- 变量详解
- 数据类型
- typeof操作符
- undefined类型
- Null类型
- Boolean类型
- Number类型
- 深入了解ES6(书)
- var 、let 、 const
- 字符串与正则表达式
- 字符串
- 正则表达式
- 函数
- 函数形参默认值
- 使用不具名参数
- 函数构造器的增强能力
- 扩展运算符
- name属性
- 明确函数的多重用途
- 块级函数
- 箭头函数
- 尾调用优化
- 扩展的对象功能
- 对象类别
- 对象字面量语法的扩展
- ES6对象新增方法
- 重复的对象属性
- 自有属性的枚举顺序
- 更强大的原型
- 解构:更方便的数据访问
- 为什么要用解构?
- 对象解构
- 数组解构
- 混合解构
- 参数解构
- Symbol与Symbol属性
- 创建Symbol
- Symbol的使用方法
- Symbol全局私有属性
- Symbol与类型强制转换
- Symbol属性检索
- Symbol的一些构造方法
- Set集合与Map集合
- Set集合
- Weak Set集合(弱引用Set集合)
- Map集合
- JS标准内置对象
- Object 构造函数及属性
- Object 构造方法
- Symbol 内建对象类的函数及属性
- Set 构造函数及属性
- Weak Set 构造函数及属性
- JS杂项
- 类数组对象
- Class类的理解和使用