js資料型別種類
js資料型別一共有7種,分別是:number,string,Null ,undefined,symbol,boolean,Object其中symbol型別不常用,所以重點理解其餘6種,
1.1 number
number型別是ECMAscript中最令人關注的資料型別了,這種型別使用 IEEE754 格式(二進位制浮點數算術標準)64位浮點數來表示 整數和浮點數值,浮點數值即小數,也就是說這就是說,JavaScript語言的底層根本沒有整數,所有數字都是小數(64位浮點數)。
var 1=1.0 //true
1.1.1 最基本的數值字面量格式如下幾種:
十進位制:十進位制:沒有前導0的數值。
八進位制:有字首0o或0O的數值,或者有前導0、且只用到0-7的八個阿拉伯數字的數值。
十六進位制:有字首0x或0X的數值。
二進位制:有字首0b或0B的數值
預設情況下,JavaScript 內部會自動將八進位制、十六進位制、二進位制轉為十進位制。下面是一些例子。
var octalNum1 = 070; // 八進位制的 56
var octalNum2 = 079; // 無效的八進位制數值——解析為 79
var octalNum3 = 08; // 無效的八進位制數值——解析為 8
var hexNum1 = 0xA; // 十六進位制的 10
var hexNum2 = 0x1f; // 十六進位制的 31
var aum1 =0b110;//十進位制的6
var aum= 0b1010;//十進位制的10
複製程式碼
1.1.2數值範圍
由於記憶體的限制,ECMAScript 並不能儲存世界上所有的數值。使用Number.MIN_VALUE 和Number.MAX_VALUE可以得知ECMAscript能夠表示的最小數值和最大數值,最小數值是 5e-324;最大數值是1.7976931348623157e+308,如果出現超出這個數值範圍的值,就會被自動轉換為特殊的infinity值。如果這個值是負數,則會被轉換成 -Infinity (負無窮),如果這個數值是正數,則會被轉換成 Infinity (正無窮)。可以使用isFinite()函式來檢測一個數值是否在數值範圍內,如:
var result = Number.MAX_VALUE + Number.MAX_VALUE;
alert(isFinite(result)); //false
var result = 11111111111111111111111111111111111111111111111111111111111
alert(isFinte(result); //true
複製程式碼
1.1.3NaN
NaN ,即非數值(Not a Number)是一個特殊的數值,這個數值用於表示一個本來要返回數值的運算元 未返回數值的情況(這樣就不會丟擲錯誤了)。例如,在其他程式語言中,任何數值除以 0都會導致錯誤, 從而停止程式碼執行。但在 ECMAScript中,0除以 0會返回 NaN,正數除以 0 返回 Infinity,負數除以 0返回-Infinity。 ,因此不會影響其他程式碼的執行。 NaN 與任何值都不相等,包括 NaN 本身。但是NaN仍然是一個
alert(NaN == NaN); //false
2.2 string
String 型別用於表示由零或多個 16 位 Unicode 字元組成的字元序列,即字串。字串可以由雙 引號(")或單引號(')表示,因此下面兩種字串的寫法都是有效的:
var firstName = "Nicholas";
var lastName = 'Zakas';
複製程式碼
2.2.1 字元字面量
String 資料型別包含一些特殊的字元字面量,也叫轉義序列,用於表示非列印字元,或者具有其 他用途的字元。這些字元字面量如下表所示:
字面量 | 含義 |
---|---|
\n | 換行 |
\t | 製表 |
\b | 空格 |
\r | 回車 |
\f | 進紙 |
\ | 斜槓 |
' | 單引號( ' ),在用單引號表示的字串中使用。例如: 'He said, 'hey.'' |
" | 雙引號( " ),在用雙引號表示的字串中使用。例如: "He said, "hey."" |
\xnn | 以十六進位制程式碼 nn 表示的一個字元(其中 n 為0~F)。例如, \x41 表示 "A" |
\unnnn | 以十六進位制程式碼 nnnn 表示的一個Unicode字元(其中 n 為0~F)。例如, \u03a3 表示希臘字元Σ |
ECMAScript 中的字串是不可變的,也就是說,字串一旦建立,它們的值就不能改變。要改變 某個變數儲存的字串,首先要銷燬原來的字串,然後再用另一個包含新值的字串填充該變數,
3.3Null和Undefined
Null型別是一個只有一個值的資料型別,這個值就是null,它表示一個空物件指標,使用typeof檢測符可以確定,
var car = null;console.log(car) //Object
如果定義的變數準備在將來用於儲存物件,那麼最好將該變數初始化為 null 而不是其他值。這樣
一來,只要直接檢查 null 值就可以知道相應的變數是否已經儲存了一個物件的引用
Undefined型別是第二個只有一個值的資料型別,即特殊的undefined,在使用 var 宣告變數但未對其加以初始化時, 這個變數的值就是 undefined ;
var message;console.log(message == undefined); //true
null和undefined有共同之處,都可以表示“沒有”
var a = undefined;
// 或者
var a = null;
複製程式碼
這兩種寫法的效果幾乎等價。同時
console.log(null == undefined) //true
一般來說,對於物件,如果你目前不想給它賦值,那麼就初始化null,對於非物件來說,如果不想給值的話, 就初始化為undefined(變數申明沒有初始化的話,預設為undefined,可以不寫),
4.4Boolean值
Boolean 型別是 ECMAScript 中使用得最多的一種型別,該型別只有兩個字面值:true 和 false 布林值代表“真”和“假”兩個狀態。“真”用關鍵字true表示,“假”用關鍵字false表示。布林值只有這兩個值。
這兩個值與數字值不是一回事,因此 true 不一定等於 1,而 false 也不一定等於 0。需要注意的是, Boolean 型別的字面值 true 和 false 是區分大小寫的。也就是說, True 和 False(以及其他的混合大小寫形式)都不是 Boolean 值,只是識別符號。 布林值往往用於流程控制語句,如下:
if ('') {
console.log('true');
}
// 沒有任何輸出
複製程式碼
5.5Object
物件(object)是 JavaScript 語言的核心概念,也是最重要的資料型別。
什麼是物件?簡單說,物件就是一組“鍵值對”(key-value)的集合,是一種無序的複合資料集合。
var obj = {
foo: 'Hello',
bar: 'World'
};
複製程式碼
上面程式碼中,大括號就定義了一個物件,它被賦值給變數obj,所以變數obj就指向一個物件。該物件內部包含兩個鍵值對(又稱為兩個“成員”),第一個鍵值對是foo: 'Hello',其中foo是“鍵名”(成員的名稱),字串Hello是“鍵值”(成員的值)。鍵名與鍵值之間用冒號分隔。第二個鍵值對是bar: 'World',bar是鍵名,World是鍵值。兩個鍵值對之間用逗號分隔。鍵名如果是數字,會自動轉換為字串,如果鍵名不符合標識名的條件(比如第一個字元為數字,或者含有空格或運算子),且也不是數字,則必須加上引號,否則會報錯。
Object 的每個例項都具有下列屬性和方法:
constructor :儲存著用於建立當前物件的函式。對於前面的例子而言,建構函式(constructor)
就是 Object() 。
hasOwnProperty(propertyName):用於檢查給定的屬性在當前物件例項中(而不是在例項
的原型中)是否存在。其中,作為引數的屬性名( propertyName )必須以字串形式指定(例
如: o.hasOwnProperty("name") )。
isPrototypeOf(object) :用於檢查傳入的物件是否是傳入物件的原型
propertyIsEnumerable(propertyName) :用於檢查給定的屬性是否能夠使用 for-in 語句
來列舉。與 hasOwnProperty() 方法一樣,作為引數的屬性名必須以字元
串形式指定。
toLocaleString() :返回物件的字串表示,該字串與執行環境的地區對應。
toString() :返回物件的字串表示。
valueOf() :返回物件的字串、數值或布林值表示。通常與 toString() 方法的返回值
相同。
6.參考資料
2.javascript高階程式開發(第三版)