首頁  >  文章  >  web前端  >  JavaScript中的值類型詳細介紹

JavaScript中的值類型詳細介紹

PHPz
PHPz原創
2016-05-16 16:23:451236瀏覽

電腦程式的實質很大程度上可以說是機器對各種資訊(值)的操作與讀寫。在JavaScript中,存在著多種類型的值,這些值分成兩大類:Primitive(基本型別)和Object(物件)。

Primitive

JavaScript中Primitive有5種:

1.Number。所有的數字,無論是整數或小數,均為Number型。
2.String。字串類型。
3.Boolean。布林類型,true或false。
4.null。此類型只有null一個值。
5.undefined。此類型只有undefined一個值。

Object

除了Primitive,JavaScript中其它任何值均為Object(對象)。 Object有以下幾種:

1.JSON鍵值對物件。如{“name”:”Bob”, “age”:42}。
2.數組(array)。如[1,4,5,7,9]。
3.函數(function)。如function(){return true;}。在JavaScript中函數有兩種存在形式:1. 可執行程式碼區塊;2. 類別(Class)的建構器(constructor)。無論是以哪一種形式存在,函數(function)總是物件是物件。

JS自帶全域物件

為了方便程式編寫,JavaScript自帶一個全域對象,該全域物件擁有以下7個成員變量,其型別均為Object :

1.Math。可以透過呼叫Math物件的方法來完成一系列複雜的數學運算。
2.Number。可以透過存取Number物件的成員變數來取得一些特殊值。
3.Array。數組物件的建構函數。
4.Function。函數物件的建構函數。
5.Date。日期物件的建構函數。
6.RegExp。正規表示式物件的建構函數。
7.Error。錯誤物件的建構函數。

在進行程式編寫時,由於可以直接存取上述7個變量,因此也可以將它們當作全域物件來使用。

Immutable與Mutable

Primitive與Object有一個涇渭分明的特性:所有的Primitive都是Immutable的,所有的Object都是Mutable的。以String類型為例,呼叫String的方法編輯後,JavaScript會將編輯後的結果儲存在一個新的String物件中,原始String物件不會有任何改變:

var s = "test";
s.toUpperCase();//return a new String object "TEST"
console.log(s);//"test" -- original String s does not change

實驗

在JavaScript中,可以透過使用typeof關鍵字來取得某個值的類型。

取得數字的類型:

var n = 42;
console.log(typeof n);

程式輸出結果為number。

取得字串的型別:

var s = "test";
console.log(typeof s);

程式輸出結果為string。

取得布林值的類型:

var b = true;
console.log(typeof b);

程式輸出結果為boolean。

取得null的型別:

var x = null;
console.log(typeof x);

程式本來就應該輸出null,但實際上卻輸出object。原因在於,當對null值使用typeof操作時,程式將傳回object:這是自JavaScript第一個版本以來就存在的一個bug。在ECMAScript標準的製定過程中,就是否修復這個bug存在過一些有趣的爭論:最終結論為:修復該bug會為太多的網站帶來問題,因此暫不修復。

取得undefined的類型:

var y = undefined;
console.log(typeof y);

程式輸出結果為undefined。

取得JSON物件的類型:

var j = {"name":"Bob", "age":42};
console.log(typeof j);

程式輸出結果為object。

取得陣列物件的類型:

var a = [2,3,5,7,11];
console.log(typeof a);

程式輸出結果為object。

取得函數物件的類型:

var f = function(){return true;};
console.log(typeof f);

函數物件較特殊,typeof操作符回傳結果為function。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn