Number() 函數(shù)的轉(zhuǎn)換規(guī)則如下。
- 如果 Boolean 值,true 和 false 將分別被轉(zhuǎn)換為 1 和 0。
- 如果是數(shù)字值,只是簡單的傳人和返回。
- 如果是 null 值,返回 0。
- 如果是 undefined,返回 NaN。
- 如果是字符串,遵循下列規(guī)則:
- 如果字符串中只包含數(shù)字(包括前面帶加號或頭號的情況),則將其轉(zhuǎn)換為十進制數(shù)值,即 “1” 會變成 1,“123” 會變成 123,而 “011” 會變成 11(注意:前導的零被忽略了);
- 如果字符串中包含有效的浮點格式,如 “1.1”,則將其轉(zhuǎn)換為對應的浮點數(shù)值(同樣,也會忽略前導零);
- 如果字符串值包含有效的十六進制格式,例如 “0xf”,則將其轉(zhuǎn)換為相同大小的十進制整數(shù)值;
- 如果字符串是空的(不包含任何字符),則將其轉(zhuǎn)換為 0;
- 如果字符串中包含除上述格式之外的字符,則將其轉(zhuǎn)換為 NaN。
- 如果是對象,則調(diào)用對象的 valueOf() 方法,然后依照前面的轉(zhuǎn)換規(guī)則返回的值。如果轉(zhuǎn)換的結(jié)果是 NaN,則調(diào)用對象的 toString() 方法,然后再次依照前面的規(guī)則轉(zhuǎn)換返回的字符串值。
使用示例,我使用的是 QML 中使用的 JS 框架,console.log 為輸出 log 的語句:
var num1 = Number("Hello World!");
console.log("num1: ", num1);
var num2 = Number("");
console.log("num2: ", num2);
var num3 = Number("000011");
console.log("num3: ", num3);
var num4 = Number(true);
console.log("num4: ", num4);
輸出結(jié)果:

輸出結(jié)果