JavaScript-數據類型

1、動態類型

JavaScript 是一種 弱類型或者說 動態語言。這意味着你不用提早聲明變量的類型,在程序運行過程當中,類型會被自動肯定。(解釋一行,執行一行)這也意味着你可使用 同一個變量保存不一樣類型的數據

JavaScript

2、數據類型

最新的 ECMAScript 標準定義了 7 種 數據類型:web

6種 原型數據類型:編程

  1. Boolean. 布爾值,true 和 false.
  2. null. 一個代表 null 值的特殊關鍵字。 JavaScript 是大小寫敏感的,所以 null 與 Null、NULL或其餘變量徹底不一樣。
  3. undefined. 變量未定義時的屬性。
  4. Number. 表示數字,例如: 42 或者 3.14159。
  5. String. 表示字符串,例如:"Howdy"
  6. Symbol ( 在 ECMAScript 6 中新添加的類型).。一種數據類型,它的實例是惟一且不可改變的。

以及 Object 對象segmentfault

3、原始值( primitive values )

除 Object 之外的全部 類型都是不可變的(值自己沒法被改變)。例如,與 C 語言不一樣, JavaScript中字符串是不可變的(譯註:如,JavaScript 中對字符串的操做必定返回了一個新字符串,原始字符串並無被改變)。咱們稱這些類型的值爲「原始值」:
  1. Boolean
  2. null
  3. undefined
  4. Number
  5. String
  6. Symbol

4、Boolean(布爾值)

布爾值數據類型只能有兩個值,它們是文本 true 和 false。 布爾值是一個真值:它指定條件是否爲 true。

4.1 比較相同

true 和 1 比較是相同,false 和 0 比較是相同(是 「==」 比較),由於內部會實現數據類型轉化,將 true 轉換成 1,將 false 轉換成 0。可是使用 「===」 就不相等了,由於他們的數據類型不等數組

4.2 Boolean()

雖然Boolean類型的字面值只有兩個,但JavaScript中全部類型的值都有與這兩個Boolean值等價的值。要將一個值轉換爲其對應的Boolean值,能夠調用類型轉換函數Boolean(),例如:瀏覽器

Boolean()

在這個例子中,字符串message被轉換成了一個Boolean值,該值被保存在messageAsBoolean變量中。能夠對任何數據類型的值調用Boolean()函數,並且總會返回一個Boolean值。至於返回的這個值是true仍是false,**取決於要轉換值的數據類型及其實際值。框架

4.3 數據類型及其對象的轉換規則

數據類型 轉換爲true的值 轉換爲false的值
Boolean true false
String 任何非空的字符串 ""(空字符串)
Number 任何非0數值(包括無窮大) 0和NAN
Object 任何對象 null
Undefined 不適用 undefined

4.4 if()語句的()內部調用 Boolean 函數

5、Null 數據類型

Null 數據類型在 JavaScript 中 僅具備一個值:null。null 關鍵字不能用做函數或變量的名稱。

5.1 清除變量內容

包含 null 的變量不包含有效的數字、字符串、布爾值、數組或對象。經過爲變量賦 null值能夠清除變量的內容(不刪除變量)。編程語言

5.2 typeof檢測null返回object

(1)在 JavaScript 中,null 與 0 不一樣(在 C 和 C++ 中)。 函數

(2)JavaScript 中的 typeof 運算符將 null 值報告爲 Object 類型而不是 Null 類型。(從邏輯角度來看,null值表示一個空對象指針測試

object

5.3 初始化爲null

若是定義的變量準備在未來用於保存對象,那麼最好將該變量初始化爲null而不是其餘值。這樣一來,只要直接檢測null值就能夠知道相應的變量是否已經保存了一個對象的引用spa

初始化爲null

5.4 undefined值派生自null值

實際上,undefined值是派生自null值的,所以ECMA-262規定對它們的相等性測試要返回true

undefined值派生自null值

儘管null和undefined有這樣的關係,但它們的用途徹底不一樣。不管在什麼狀況下都沒有必要把一個變量的值顯式地設置爲undefined,但是一樣的規則對null卻不適用

換句話說,只要意在保存對象的變量尚未真正保存對象,就應該明確地讓該變量保存null值。這樣作不只能夠體現null做爲空對象指針的慣例,並且也有助於進一步區分null和undefined。

6、Undefined 數據類型

Undefined 類型只有一個值,即特殊的 undefined。在使用var聲明變量但 未對其加以初始化時,這個變量的值就是 undefined。

undefined 翻譯中文 → 未定義(defined 翻譯中文 → 定義)

6.1 兼容舊版瀏覽器

在早期的JavaScript版本中是沒有規定undefined這個值的,因此在有些框架中爲了兼容舊版瀏覽器,會給window對象添加undefined值。

兼容舊版瀏覽器

7、null 和 undefined 的區分

一、若使用 「==」 進行比較,則他們是相等的,由於比較的是

二、區分他們的兩種方法(比較他們的數據類型)

(1)使用 typeof 將他們區分

(2)若使用全等 「===」 ,比較的是數據類型,只有全都相同才返回 true

Example

8、Number(數字)

Number類型用來表示 整數值浮點數值,還有一種特殊的數值,即 NaN(非數值 Not a Number)。

8.1 整數值

整數值能夠是 正整數負整數0。 它們可經過以 10 爲基數(十進制)、以 16 爲基數(十六進制)和以 8
爲基數(八進制)來表示。 JavaScript 中的 大多數數字都寫成十進制形式

8.1.1 十六進制

經過在整數前面加前導「0x」(零和 x|X)來表示十六進制(「hex」)整數。 字母 A 到 F 以單個數字的形式表示以 10 爲基數的 10 到 15。 字母 A 到 F 用於以單個數字的形式表示以 10 爲基數的 10 到 15。 即,0xF 至關於 15,0x10 至關於 16。

8.1.2 八進制

經過在八進制整數前面加前導「0」(零)來表示八進制整數。 八進制整數只包含 0 到 7 的數字。 具備前導「0」幷包含數字「8」和/或「9」的數字將被解釋爲十進制數字。

整數值

8.2 浮點數值

浮點值能夠是 帶有小數部分的整數。此外,還能夠用 科學計數法來表示它們。即,使用大寫或小寫字母「e」來表示「10 的冪」。

JavaScript 使用數字表示形式的 8 字節 IEEE 754 浮點標準來表示數字。 這意味着您能夠編寫最大爲 1.79769x10308 和最小爲 5x10-324 的數字。 包含小數點且小數點前面有單個「0」的數字被解釋爲十進制浮點數。

8.3 NaN

NaN → 英文翻譯 Not A Number

NaN 用於表示一個 原本要返回數值的操做數未返回數值的狀況(這樣就不會拋出錯誤了)。例如,在其餘編程語言中,任何數值除以0都會致使錯誤,從而中止代碼執行。但在 JavaScript中,任何數值除以0會返回NaN,所以不會影響其餘代碼的執行。

8.3.1 兩個特色

NaN自己有兩個非同尋常的特色。首先,任何涉及NaN的操做(例如NaN/10)都會返回NaN,這個特色在多步計算中有可能致使問題。其次,NaN與任何值都不相等,包括NaN自己。例如,下面的代碼會返回false。

NaN

8.3.2 isNaN()函數

isNaN()函數,用於判斷是不是一個非數字類型。若是傳入的參數是一個非數字類型,那麼返回true;不然返回false;

isNaN()函數,傳入一個參數,函數會先將參數轉換爲數值。若是參數類型爲對象類型,會先調用對象的valueOf()方法, 再肯定該方法返回的值是否能夠轉換爲數值類型。若是不能,再調用對象的toString()方法,再肯定返回值。

isNaN()函數

9、String(字符串)

JavaScript的字符串類型用於表示文本數據。

9.1 索引和長度

String是一組16位的無符號整數值的「元素」。在字符串中的每一個元素佔據了字符串的位置。第一個元素的索引爲0,下一個是索引1,依此類推。字符串的長度是它的元素的數量。

9.2 不可更改

不一樣於類 C 語言,JavaScript 字符串是不可更改的。這意味着字符串一旦被建立,就不能被修改。可是,能夠基於對原始字符串的操做來建立新的字符串。

(1)獲取一個字符串的子串可經過選擇個別字母或者使用 String.substr()

(2)兩個字符串的鏈接使用鏈接操做符 (+) 或者 String.concat()

9.3 toString()

toString()方法將其餘數據類型轉換成 String 類型。但若對 null 或 undefined 進行操做,則會報錯。

9.4 String()

String()方法一樣能實現 toString()的效果,而且能夠對 null 和 undefined 進行操做。

原理:先調用 toString(),若是能夠轉換成字符串,就將結果直接返回。否,再進行判斷是 null 仍是 undefined,而後返回‘null' 或 ‘undefined'

10、Symbol(符號類型)

符號(Symbols)是ECMAScript 第6版新定義的。符號類型是惟一的而且是 不可修改的,而且也能夠用來做爲Object的key的值。在某些語言當中也有相似的原子類型(Atoms),你也能夠認爲爲它們是C裏面的枚舉類型。

閱讀更多

相關文章
相關標籤/搜索