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