JS基本数据类型-Number
基本数据类型:数字(Number)、字符串(String)、布尔(Boolean)、空对象指针(Null)、未定义(Undefined)、Symbol。
Symbol 是 ES6 引入的一种新的基本数据类型,表示唯一的值。
数字(Number)
JavaScript 只有一种数字类型。数字可以带小数点,也可以不带:
var x1 = 12.00; //使用小数点来写
var x2 = 12; //不使用小数点来写
var y = 123e5; // 12300000
var z = 123e-5; // 0.00123
所有 JavaScript 数字均为 64 位
在JavaScript中,数字不分为整数类型和浮点型类型,所有的数字都是由浮点型类型。JavaScript 采用 IEEE754 标准定义的 64 位浮点格式表示数字,它能表示最大值为 ±1.7976931348623157e+308,最小值为 ±5e-324。
精度
整数(不使用小数点或指数计数法)最多为 15 位。
var x = 999999999999999; // x 为 999999999999999
var y = 9999999999999999; // y 为 10000000000000000
小数的最大位数是 17,但是浮点运算并不总是 100% 准确:
var x = 0.2+0.1; // 输出结果为 0.30000000000000004
八进制和十六进制
如果前缀为 0,则 JavaScript 会把数值常量解释为八进制数,如果前缀为 0 和 “x”,则解释为十六进制数。
var y = 0377; // 输出结果为 255
var z = 0xFF; // 输出结果为 255
无穷大(Infinity)
正无穷大,用 Infinity 表示
负无穷大,用 -Infinity 表示
数字的方法
1. toString() 方法
toString() 将数字/表达式转化成字符串.
(123).toString(); // '123'
(100 + 23).toString(); // '123'
2. valueOf() 方法
valueOf() 将数值转化成数值, 返回数字格式
(123).valueOf(); // 123
(100 + 23).valueOf(); // 123
所有 JavaScript 数据类型都有 valueOf() 和 toString() 方法。
3. toExponential() 方法
toExponential() 将数字四舍五入并使用指数计数法, 返返回字符串格式, 参数不设置则不会进行四舍五入.
var x = 3.1415926;
x.toExponential(); // "3.1415926e+0"
x.toExponential(3); // "3.142e+0"
4. toFixed() 方法
toFixed() 指定保留几位小数, 返回字符串格式
var x = 3.1415926;
x.toFixed(0); // '3'
x.toFixed(4); // '3.1416'
toFixed(2) 非常适合处理金钱。
5. toPrecision() 方法
toPrecision() 指定数字长度, 返回字符串格式, 参数必须是1-100(argument must be between 1 and 100)
var x = 3.14;
x.toPrecision(); // "3.14"
x.toPrecision(5); // "3.1400"
6. 把变量转换为数值
Number() 方法
Number() 将其他数据类型转换为数字.
// Number() 还可以把日期转换为数字:
Number(new Date("2019-01-01")); // 返回 1546300800000
parseFloat()
parseFloat() 将其他数据类型转(主要是字符串)换成数字浮点型.
parseInt()
parseInt() 将其他数据类型转(主要是字符串)换成数字整型.
parseFloat() 和 parseInt() 都是从字符串最左侧开始查找有效数字, 一旦遇到非数字就停止查找, 如果字符串的第一个字符是非数字则不能被转换, 开头和结尾的空格是允许的, 字符串中只返回第一个数字.
parseFloat('13.5px') // 13.5
parseInt('width:15px') // NaN
parseInt(' 13px ') // 13
parseInt('12 34 56') // 12
Number() parseFloat() parseInt()这些方法并非数字方法,而是全局 JavaScript 方法。
NaN(非数字值)
NaN (not a number)代表非数字值的特殊值, 但是它是数字类型.
可以使用 isNaN() 全局函数来判断一个值是否是 NaN 值.
isNaN() 检查机制:
1. 首先验证当前检测的值是否是数字类型, 如果不是会把值自动转换成数字类型.
– 非数字类型转换成数字
– 其他基本数据类型转换成数字: 直接使用Number()方法转换
– [字符串转数字]
– Number(’13’) -> 13
– Number(’13px’) -> NaN 如果字符串中出现任意一个非数字, 结果为NaN
– Number(‘13.5’) -> 13.5 可以识别小数
– Number(”) -> 0
– [布尔转数字]
– Number(‘true’) -> 1
– Number(‘false’) -> 0
– [其他转数字]
– Number(‘null’) -> 0
– Number(‘undefined’) -> NaN
– 引用数据类型转换成数字: 先用toString()方法将引用值转换成字符串, 再使用Number()方法讲字符串转换为数字
– [数组]
– [12, 34].toString() -> ‘12,34’ -> NaN
– [12].toString() -> ’12’ -> 12
– [].toString() -> ” -> 0
– [对象]
– ({}).toString() -> ‘[object Object]’ -> NaN 任何对象转字符串都是'[object Object]’
– [正则]
– /^$/.toString() -> ‘/^$/’ -> NaN
2. 当前检测的值已经是数字类型, 是有效数字返回false, 不是返回true(数字类型中只有NaN不是有效数字).
isNaN(15) // false
isNaN('13') // false
isNaN('abc') // true
isNaN(true) // false
isNaN(null) // false
isNaN(undefined) // true
isNaN([12]) // false
isNaN([12, 34]) // true
isNaN({age: 19}) // true
isNaN(/^$/) // true
isNaN(function () {}) // true
NaN的比较
NaN 和谁都不相等, 包括它自己.
NaN == NaN // false
检测一个数字是否是有效数字要用 isNaN() 方法.
布尔(Boolean)
Boolean 类型只有两个字面量值: true 和 false,并且严格区分大小写。
在 ECMAScript 中所有类型的值都有与 Boolean 字面量 true 和 false 等价的值,要将一个值转化为其对应的布尔 值,可以使用函数 Boolean()。
- Boolean() -> 转换成布尔值
- ! -> 取反, 先转换成布尔类型, 再把布尔类型取反
- !! -> 两次取反, 等于没取反
!'' // true
!!'' // false
==规律: 空字符串、0、NAN、null、undefined 转换为 false,其他转换为 true。==
布尔类型,一般在流程控制语句中加以利用。
//判断变量有值
var message = 'Hello';
if(message) {alert(message + "World")};
Null 和 Undefined
- Null 空对象指针
- Undefined 未定义
Null 和 Undefined 都代表空.
Null 一般指意料中的没有(一般都是手动先赋值为Null, 后续会再重新赋值)
var num = Null
num = 12
Undefined 一般不是人为手动赋值, 大部分都是浏览器自主为空(后续可以重新赋值也可以不赋值)
var a
原创文章,作者:tipak,如若转载,请注明出处:http://www.myqqu.com/note/javascript_lessons/js-jibenshujuleixing-number.html