JavaScript菜鳥教程

JavaScript 對象

JavaScript 函數(shù)

JS HTML DOM

JS 瀏覽器BOM

AJAX 菜鳥教程

JavaScript 參考手冊

JavaScript 數(shù)值(Number)

JavaScript只有一種數(shù)字類型,沒有整數(shù)和浮點數(shù)的單獨指定。

因此,數(shù)字可以用JavaScript編寫,帶或不帶小數(shù)。

var a = 25; // 無小數(shù)點
var b = 80.05;  // 有小數(shù)點
測試看看?/?

在以上兩種情況下,數(shù)據(jù)類型都是一個數(shù)字,并且無論該數(shù)字是否帶有小數(shù)點都相同。

可以在JavaScript中使用科學的指數(shù)表示法來縮寫非常大或很小的數(shù)字,如以下示例所示:

let num1 = 957e8; // 95700000000
let num2 = 957e-8;// 0.00000957
測試看看?/?

JavaScript中的數(shù)字被認為是準確的,最多15位數(shù)字。這意味著數(shù)字將在到達第16位后四舍五入:

let num1 = 999999999999999; // 值保持不變 999999999999999
let num2 = 9999999999999999;// 向上舍入到 10000000000000000
測試看看?/?

數(shù)字的內(nèi)部表示

與其他語言不同,JavaScript不會定義不同類型的數(shù)字,例如整數(shù),短整數(shù),長整數(shù),浮點數(shù)等。

JavaScript數(shù)字具有64位精度,這也稱為雙精度。

內(nèi)部表示基于IEEE 754標準。

64位在數(shù)字的符號,指數(shù)和小數(shù)之間分配,如下所示:

標識指數(shù)分數(shù)
1 bit11 bit52 bit
Bit 63Bits 62–52Bits 51–0

數(shù)字相加和字符串拼接

從前面的章節(jié)中可以知道,+運算符用于數(shù)字相加和字符串拼接。

如果為數(shù)字則數(shù)字相加。為字符串則將字符串串聯(lián)起來。

如果將兩個數(shù)字相加,則結果將是一個數(shù)字:

let x = 50;
let y = 10;
let z = x + y;  // z  = 60 (a number)
測試看看?/?

如果是兩個字符串,結果將是字符串串聯(lián):

let x = "50";
let y = "10";
let z = x + y;  // z  = 5010 (a string)
測試看看?/?

如果數(shù)字和字符串,結果將是字符串串聯(lián):

let x = 50;
let y = "10";
let z = x + y;  // z  = 5010 (a string)
測試看看?/?

如果字符串和數(shù)字,結果將是字符串串聯(lián):

let x = "50";
let y = 10;
let z = x + y;  // z  = 5010 (a string)
測試看看?/?

JavaScript從左到右計算表達式。不同的序列可以產(chǎn)生不同的結果。

在下面的示例中,首先將50 + 10相加,因為x和y都是數(shù)字,然后將60 +“30”連接起來,因為z是字符串:

let x = 50;
let y = 10;
let z = "30";
let sum = x + y + z;  // sum  = 6030 (a string)
測試看看?/?

一個常見的錯誤,預期此結果為60:

let x = 50;
let y = 10;
let z = "The sum is: " + x + y;
測試看看?/?

您可以使用括號解決以上問題:

let x = 50;
let y = 10;
let z = "The sum is: " + (x + y);
測試看看?/?

數(shù)字字符串和數(shù)學表達式

JavaScript字符串可以包含數(shù)字值。

  let x = 50;  // x 是一個數(shù)字
  let y = "50";  // y 是一個字符串

如果字符串包含數(shù)字值,則可以在JavaScript中執(zhí)行數(shù)學表達式。

可以執(zhí)行除法:

let x = "50" / "10";  // x  = 5
測試看看?/?

可以執(zhí)行乘法:

let x = "50" * "10";  // x  = 500
測試看看?/?

可以執(zhí)行冪運算:

let x = "5" ** "3";  // x  = 125
測試看看?/?

可以執(zhí)行增量:

let x = "50";
x++; // x  = 51
測試看看?/?

可以執(zhí)行減法:

let x = "50" - "10";  // x  = 40
測試看看?/?

無法執(zhí)行加法:

let x = "50" + "10";  // x  = 5010
測試看看?/?

注意:如果添加兩個字符串,結果將是字符串串聯(lián)。

JavaScript NaN-非法數(shù)字

在JavaScript NaN中,保留字表示數(shù)字不是合法數(shù)字。

如果您嘗試對數(shù)字和非數(shù)字值執(zhí)行數(shù)學運算,NaN將返回。

var x = 50 / "(cainiaoplus.com)";  // x  = NaN (Not a Number)
測試看看?/?

但是,如果字符串包含數(shù)字值,則可以使用JavaScript執(zhí)行數(shù)學表達式:

var x = 50 / "10";  // x  = 5
測試看看?/?

您可以使用全局JavaScript isNaN()函數(shù)來確定值是否為數(shù)字:

var x = 50 / "(cainiaoplus.com)";
isNaN(x);// 返回true,因為x不是一個數(shù)字
測試看看?/?

將值分配給NaN操作中使用的變量NaN時,即使另一個操作數(shù)是合法數(shù)字,也將導致的值:

var x = NaN;
var y = 27;
var z = x + y;  // z  = NaN
測試看看?/?

NaN是一個數(shù)字;typeof NaN返回number:

typeof NaN;   // will return "number"
測試看看?/?

JavaScript 無窮

Infinity(正無窮)或-Infinity(負無窮)如果您計算的數(shù)字超出JavaScript中可用的最大數(shù)字,則將返回。

對于未定義的值,也將發(fā)生這些情況,例如除以零時:

var x = 5 / 0;   // 將返回無窮
var y = -5 / 0;  // 將返回負無窮
測試看看?/?

用技術術語來說,Infinity(正無窮)當數(shù)字超過number時將顯示1.797693134862315E+308,它表示JavaScript中的上限。

同樣,-Infinity(負無窮)當數(shù)字超出的下限時將顯示-1.797693134862316E+308。

Infinity是一個數(shù)字:typeof Infinity返回number:

typeof Infinity;   // will return "number"
測試看看?/?

該數(shù)字Infinity也可以在循環(huán)中使用:

var num = 5;
while (num != Infinity) { 
// 這里的代碼將執(zhí)行到num = ∞
}
測試看看?/?

JavaScript 基數(shù)

默認情況下,JavaScript將數(shù)字顯示為以10基數(shù)的小數(shù)。

數(shù)字也可以用十六進制(基數(shù)16),二進制(基數(shù)2)和八進制(基數(shù)8)表示。

十六進制數(shù)字的前綴為0x:

var x = 0xFF;  // x  = 255
測試看看?/?

二進制數(shù)字的前綴為0b:

var x = 0b1111;// x  = 15
測試看看?/?

切勿寫一個以零開頭的數(shù)字(例如0121)。如果將數(shù)字寫成前導零,則JavaScript會將數(shù)字解釋為八進制:

var x = 016;
測試看看?/?

您可以使用該toString()方法從2到36的數(shù)字返回數(shù)字。

十六進制為基數(shù)16,十進制為基數(shù)10,八進制為基數(shù)8,二進制為基數(shù)2。

var num = 255;
num.toString(10);  // returns 255
num.toString(16);  // returns ff
num.toString(8);   // returns 377
num.toString(2);   // returns 11111111
測試看看?/?

數(shù)字基元和數(shù)字對象

通常,JavaScript數(shù)字是從文字創(chuàng)建的原始值:

var num = 50;

但是,也可以使用 new關鍵字將數(shù)字定義為對象:

var num = new Number(50);

為了測試兩者之間的差異,我們將初始化一個數(shù)字基元和一個數(shù)字對象。

var num1 = 50;
var num2 = new Number(50);

typeof num1// returns number
typeof num2// returns object
測試看看?/?

注意:請勿將數(shù)字創(chuàng)建為對象。這會降低執(zhí)行速度,并會產(chǎn)生一些意外的結果。

使用==運算符時,數(shù)字等于:

var num1 = 50;
var num2 = new Number(50);

document.write(num1 == num2); // 返回true,因為num1和num2具有相等的值
測試看看?/?

使用===運算符時,相等的數(shù)字不相等,因為===運算符期望值和類型都相等:

var num1 = 50;
var num2 = new Number(50);

document.write(num1 === num2); // 返回false,因為num1和num2具有不同的類型
測試看看?/?

對象無法比較:

var num1 = new Number(50);
var num2 = new Number(50);

document.write(num1 == num2); // 返回false,因為num1和num2是不同的對象
document.write(num1 === num2); // 返回false,因為num1和num2是不同的對象
測試看看?/?

注意(==)和(===)之間的區(qū)別。比較兩個JavaScript對象將始終返回false。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清