js資料型別重要知識整理

Jc Bound發表於2019-03-20

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.參考資料

1.阮一峰-javascript資料型別

2.javascript高階程式開發(第三版)

相關文章