標籤:func 相互轉換 編程 重要 == 儲存 value prototype 資料
JS一共為我們定義了6中資料類型,分別是:undefined、null、boolean(布爾)、number(數字)、string(字串)、object(對象)。(ES6中定義了另外其他的資料類型)。其中前5中為單一資料型別、object為複雜資料類型
在理解每一種資料類型之前,我們說一下變數,在任何語言中變數都是儲存資訊的容器。比如:在數學中 x = 5;那x就是數字5的容器,x就是變數。在JS中使用var關鍵字定義一個變數。例如:var x = 5;
說到這裡,我們就很好理解什麼是資料類型了。在數學中數字還分為整數、小數、負數。。。等等好幾種類型,每一種類型適合什麼樣的運演算法則,都有明確的規定。那麼在JS這門語言中,就定義了這6中資料類型,以及每種類型的使用規則和使用情境。接下來我們一一查看。
在講每種類型之前我們先介紹一個js操作符:typeof (用來檢測變數的資料類型)。
var a;
typeof(a); //undefined
var b = 123;
typeof b ; //number
上面的代碼可以看出typeof的()是可選項。
undefined
只有一個值就是undefined;
那我們先來定義一個undefined的變數:
var a = undefined;
我們知道undefined是未定義的意思,那這個變數有什麼意義呢?其實undefined並不是用來定義一個變數,而是當變數未被初始化的時候,自動賦予undefined的值。例如:var a;這個時候a就被自動賦予undefined的值。
那為什麼要這麼做呢?我們想一想數學上當我們唯寫一個x的時候,我們能說這個x是整數或者小數或者負數嗎?肯定不能吧!同樣的道理,如果沒有undefined這個資料類型,我們定義一個變數 var a;我們能說這個變數是數字?字串?還是對象?肯定不能吧?現在有了undefined我們就可以說這個a是undefined類型的。這就是undefined資料類型的意義。
null
也只有一個值就是null;
var b = null;
邏輯角度上看,null表示的是一個null 指標對象。那null的用途是什麼呢?我們可以用typeof null;發現返回的並不是null,而是object,呵呵 你個騙子你不是說typeof可以檢測資料類型嗎?其實這恰恰就能說明null的用途。如果我們定義一個變數將來準備儲存對象。那我們最好將這個變數初始化為null。
在這裡要另外提一點的是:undefined是派生自null值的。所以
undefined == null; //true
boolean
有兩個值,分別是:true和false;
var c = true;
var d = false;
雖然boolean類型只有兩個值,但是js中所有的資料類型都可以和boolean值相互轉換。轉換規則如下:
資料類型 true false
string 非Null 字元串 Null 字元串
number 非0數字值(包括無窮大) 0/NaN
object 任何對象 null
undefined 不適用 undefined
這些轉換規則對於學習後面的流程式控制制語句將會非常重要。
number
這種類型表示數字:
var f = 1234566;
var g = 1.2356;
另外number類型還有一個特殊的值:NaN(非數值 Not a Number)
這個數值用於表示一個本來要返回數值的運算元未返回數值的情況(這樣就不會拋出錯誤了)。例如,在其他程式設計語言中,任何數值除以0都會導致錯誤,從而停止代碼執行。但在JavaScript中,任何數值除以0會返回NaN,因此不會影響其他代碼的執行。
string
用這種類型表示字串:
var s = "abcdef";
var t = "北京";
字串可以有單引號(‘)或者雙引號(")表示。只要變數是由單引號或者雙引號表示的,那這個變數就是字串。看下面幾個例子:
var a = "true"; typeof a; //"string"
var b = "5689"; typeof b; //"string"
object
對象是一組資料和功能的集合。
var o =new Object();
o.name="beijing"; //對象的屬性
o.run = function(){}; //對象的方法
當你建立一個對象的時候,js會自動為這個對象執行個體添加下列預設屬性和方法。
constructor——儲存著用於建立當前對象的函數。
hasOwnProperty(propertyName)——用於檢查給定的屬性在當前對象執行個體中(而不是在執行個體的原型中)是否存在。其中,作為參數的屬性名稱(propertyName)必須以字串形式指定(例如:o.hasOwnProperty("name"))。
isPrototypeOf(object)——用於檢查傳入的對象是否是另一個對象的原型。
propertyIsEnumerable(propertyName)——用於檢查給定的屬性是否能夠使用for-in語句來枚舉。
toString()——返回對象的字串表示。
valueOf()——返回對象的字串、數值或布爾值表示。通常與toString()方法的傳回值相同。
JavaScript資料類型