一個人開發一個產品,小程序從0到1,第5章 數據類型之數值

小程序定義變量時,不用指定數據類型,根據值進行類型推斷即可。推斷結果為數據類型number、string、boolean、object、array、function和regexp、date八種中的其中一種。有編程經驗的同志應該知道,沒編程經驗的同學要知道,在很多編程語言中,原始數據類型是不能調用方法的。

如果要支持調用方法,需對框架進行改良,小程序改良之後,支持在調用方法時自動通過Number()等構造一個臨時對象,而訪問的方法均來自這個臨時對象;undefined 和 null 沒有對應的包裝對象,所以訪問他們的方法會報錯。

區分不同數據類型,可通過constructor屬性實現,也可通過可typeof進行判斷,但typeof只能用於區分number、string和boolean類型。

7.1 數值類型number

number包括整數和小數兩種數值,可調用方法如下。

toString(radix):數值轉為字符串。radix省略時,使用基數10(十進制),radix為2、8、16時,顯示二、八、十六進制值的字符串;

valueOf():獲取Number對象的原始值,隱式調用;

toLocaleString(x):數值x轉為字符串並進行數字本地格式化,默認zh-cn;

toFixed(x):數值保留小數點後指定位數並轉換為字符串;

toExponential(x):數值以指數形式表示,保留小數點後指定位數並轉換為字符串;

toPrecision(x):指數或點形式表示數值,保留指定位數並轉換為字符串。

<code>//number數值類型使用示例
onLoad: function () {
let i = 1680.506;
console.log('變量值為:%f,數據量類型是:%s', i, typeof i);
console.log('判斷為Number的結果是:', Number==i.constructor)
console.log('轉為字符串類型結果是:', typeof i.toString());
console.log('轉為8進制值為:', i.toString(8));
console.log('本地化格式結果:', i.toLocaleString());
console.log('保留2位小數,四捨五入:', i.toFixed(2));
console.log('指數形式:', i.toExponential());
console.log('保留3位小數,四捨五入:', i.toExponential(3));
console.log('保留位數,四捨五入:', i.toPrecision(3));
}/<code>

輸出結果

<code>變量值為:1680.506,數據量類型是:number
判斷為Number的結果是: true
轉為字符串類型結果是: string
轉為8進制值為: 3220.40304467227433
本地化格式結果: 1,680.506
保留2位小數,四捨五入: 1680.51
指數形式: 1.680506e+3
保留3位小數,四捨五入: 1.681e+3
保留位數,四捨五入: 1.68e+3/<code>

轉為數值:可用Number()把其他數據類型轉為數值型,如果結果非數值,返回NaN。還可用內置方法parseInt(),將其他數據類型轉為整數, 可用parseFloat()轉為浮點數,轉換失敗時也是返回NaN。

<code>//數值類型轉換使用示例
onLoad: function(options) {
let s = "1210.25";
let n = Number(s);
console.log('字符串"%s",轉為數值類型是:%s', s, typeof n);
console.log('非數值轉換為數值,結果為:%s', Number('abc'));
let i = parseInt('69855');
console.log('"69855"字符串轉為整數,結果是:%d', i);
let f = parseFloat("pf");
console.log('"pf"字符串轉為浮點數,結果是:%f', f);
}/<code>

輸出結果

<code>字符串"1210.25",轉為數值類型是:number
非數值轉換為數值,結果為:NaN
"69855"字符串轉為整數,結果是:69855
"pf"字符串轉為浮點數,結果是:NaN/<code>
一個人開發一個產品,小程序從0到1,第5章 數據類型之數值

騷年在編程的過程中,經常遇到的數據類型除了數值之外,還有字符串。有關字符串的詳細內容,請見下一張傑。


分享到:


相關文章: