JavaScript学习笔记(三)

Posted by Ivens on October 28, 2019

一、JavaScript 数字

超大或超小的数可通过科学计数法来写:

1
2
var x = 123e5;    // 12300000
var y = 123e-5;   // 0.00123

JavaScript 数值始终以双精度浮点数来存储,根据国际 IEEE 754 标准。

数字和字符串相加

1
2
3
4
var x = 10;
var y = 20;
var z = "30";
var result = x + y + z;

答案为:3030

JavaScript 从左向右进行编译。因为 x 和 y 都是数,10 + 20 将被相加。因为 z 是字符串,30 + “30” 被级联。


在所有数字运算中,JavaScript 会尝试将字符串转换为数字

1
2
3
var x = "100";
var y = "10";
var z = x / y;    // z 将是 10

例外:

1
2
3
var x = "100";
var y = "10";
var z = x + y;       // z 不会是 110(而是 10010)

例子中,JavaScript 用 + 运算符对字符串进行了级联。

二.NaN - 非数值

NaN 属于 JavaScript 保留词,指示某个数不是合法数。

尝试用一个非数字字符串进行除法会得到 NaN(Not a Number): var x = 100 / "Apple"; // x 将是 NaN(Not a Number)

函数 isNaN() 来确定某个值是否是数

1
2
var x = 100 / "Apple";
isNaN(x);               // 返回 true,因为 x 不是数

在数学运算中使用了 NaN,则结果也将是 NaN

但也许是串连接:

1
2
3
var x = NaN;
var y = "5";
var z = x + y;         // z 将是 NaN5

NaN 是数,typeof NaN 返回 number

三.Infinity

Infinity (或 -Infinity)是 JavaScript 在计算数时超出最大可能数范围时返回的值。

1
2
3
while (myNumber != Infinity) {          // 执行直到 Infinity
    ........
}

除以 0(零)也会生成 Infinity

Infinity 是数:typeOf Infinity 返回 number

四.JavaScript 常用数值方法

toString() 以字符串返回数值。

valueOf() 以数值返回数值

toFixed() 返回字符串值,它包含了指定位数小数的数字

五.把变量转换为数值

这三种 JavaScript 方法可用于将变量转换为数字:

  • Number() 方法
  • parseInt() 方法
  • parseFloat() 方法

这些方法并非数字方法,而是全局 JavaScript 方法。

实例1:

1
2
3
4
5
6
7
8
9
10
x = true;
Number(x);        // 返回 1
x = false;     
Number(x);        // 返回 0
x = new Date();
Number(x);        // 返回 1404568027739
x = "10"
Number(x);        // 返回 10
x = "10 20"
Number(x);        // 返回 NaN

实例2:

1
2
3
4
5
parseInt("10");         // 返回 10
parseInt("10.33");      // 返回 10
parseInt("10 20 30");   // 返回 10
parseInt("10 years");   // 返回 10
parseInt("years 10");   // 返回 NaN

实例3:

1
2
3
4
5
parseFloat("10");        // 返回 10
parseFloat("10.33");     // 返回 10.33
parseFloat("10 20 30");  // 返回 10
parseFloat("10 years");  // 返回 10
parseFloat("years 10");  // 返回 NaN

六.数字属性不可用于变量

数字属性属于名为 Number 的 JavaScript 数字对象包装器。

这些属性只能作为 Number.MAX_VALUE 访问,使用变量、表达式或值,将返回 undefined:

1
2
var x = 6;
var y = x.MAX_VALUE;    // y 成为 undefined