JS中常用的數(shù)據(jù)類型
- 基本數(shù)據(jù)類型
- Number和NaN檐晕、Infinity
JavaScript不區(qū)分整數(shù)和浮點(diǎn)數(shù),統(tǒng)一用Number表示蚌讼。
// NaN表示Not a Number也叫非有效數(shù)字辟灰,當(dāng)無法計(jì)算結(jié)果時(shí)用NaN表示, NaN和任何值(包括自己)都不相等。
// Infinity表示無限大篡石,當(dāng)數(shù)值超過了JavaScript的Number所能表示的最大值時(shí)芥喇,就表示為Infinity
- Number和NaN檐晕、Infinity
`isNaN`
檢測(cè)一個(gè)值是否為非有效數(shù)字,如果為非有效數(shù)字返回TRUE凰萨,反之是有效數(shù)字返回FALSE
在使用isNaN進(jìn)行檢測(cè)的時(shí)候乃坤,首先會(huì)驗(yàn)證檢測(cè)的值是否為數(shù)字類型,如果不是沟蔑,先基于Number()這個(gè)方法湿诊,把值轉(zhuǎn)換為數(shù)字類型,然后再檢測(cè)瘦材。
console.log(isNaN(10)); // false,有效數(shù)字
console.log(isNaN("15")); // false,有效數(shù)字
console.log(isNaN("AA")); // true,非有效數(shù)字
console.log(isNaN(10, "15")); // false,有效數(shù)字,不會(huì)檢測(cè)"15",只檢測(cè)第一個(gè)
console.log(isNaN(10, "AA")); // false,有效數(shù)字,只檢測(cè)第一個(gè)
console.log(isNaN("AA", 10)); // true,非有效數(shù)字,只檢測(cè)第一個(gè)
console.log(isNaN(true)) // false,有效數(shù)字
console.log(isNaN(false)) // false,有效數(shù)字
`把其它類型值轉(zhuǎn)換為數(shù)字類型`
- Number([val]);
- parseInt/parseFloat([val],[進(jìn)制]):也是轉(zhuǎn)換為數(shù)字的方法厅须,對(duì)于字符串來說,它是從左到右依次查找有效數(shù)字字符食棕,直到遇到非有效數(shù)字字符朗和,停止查找(不管后面是否還有數(shù)字,都不在找了)簿晓,把找到的當(dāng)做數(shù)字返回
===字符串轉(zhuǎn)化為數(shù)字眶拉;當(dāng)把字符串轉(zhuǎn)換為數(shù)字時(shí),只要字符串中有一個(gè)非有效數(shù)字字符(第一個(gè)點(diǎn)除外)憔儿,結(jié)果都是NaN忆植。一個(gè)特別的是:空字符串會(huì)得到數(shù)字0。
console.log(Number("12.")); // 12
console.log(Number("12.5555")); // 12.5555
console.log(Number("12.5px")); // NaN
console.log(Number("")); // 0
console.log(Number("AA")); // NaN,非有效數(shù)字
===布爾轉(zhuǎn)化為數(shù)字;
console.log(Number(true)); // 1
console.log(Number(false)); // 0
===null和undefined轉(zhuǎn)化為數(shù)字朝刊;
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
===把引用數(shù)據(jù)類型轉(zhuǎn)換為數(shù)字耀里,是先把它基于toString方法轉(zhuǎn)換為字符串,然后再轉(zhuǎn)換為數(shù)字拾氓;
console.log(Number({name: '10'})); // NaN
console.log(Number({})); // NaN
console.log(Number([])); // 0
console.log(Number([12])); // 12
console.log(Number([12, 23])); // NaN
console.log(Number([12, 23, 'AA'])); // NaN
- String
所有用單引號(hào)冯挎、雙引號(hào)、反引號(hào)(撇/)包起來的都是字符串 - Bool
true/false - null
null表示“空”咙鞍。
Java也用null房官,Swift用nil,Python用None表示续滋。但是翰守,在JavaScript中,還有一個(gè)和null類似的undefined吃粒,它表示“未定義”潦俺。
大多數(shù)情況下拒课,我們都應(yīng)該用null徐勃。undefined僅僅在判斷函數(shù)參數(shù)是否傳遞的情況下有用。 - undefined表示“未定義”早像。
- String
- 引用數(shù)據(jù)類型
- 對(duì)象數(shù)據(jù)類型object
-
{} 普通對(duì)象
-
[] 數(shù)組對(duì)象
/^[+-]?(\d|([1-9]\d+))(.\d+)?$/ 正則對(duì)象
Math數(shù)學(xué)函數(shù)對(duì)象
日期對(duì)象
...
-
- 函數(shù)數(shù)據(jù)類型function
- 對(duì)象數(shù)據(jù)類型object