ECMAScript中有5種簡單的數據類型(也稱基本數據類型)和 一種複雜數據類型(也稱引用類型)函數
Undefined類型只有一個值,即特殊的undefined。在使用var聲明變量但未對其加以初始化時這個變量的值就是undefined測試
var message; alert(message == undefined); //true
Null類型是第二個只有一個值得數據類型,這個特殊的值是null。null值表示空指針對象,故使用typeof操做符檢測null值時會返回"object",實際上,undefined值是派生自null值的,所以ECMA-262規定對他們的相等性測試要返回true指針
var car = null; alert(typeof car); // "object" alert(null == undefined) //true
Boolean 類型是 ECMAScript 中使用得最多的一種類型,該類型只有兩個字面值:true和false。true 不必定等於 1,而 false 也不必定等於 0code
var found = true; var lost = false;
能夠對任何數據類型的值調用Boolean()函數,並且總會返回一個Boolean值。至於返回的是true仍是false,取決於要轉換值的數據類型及其實際值。下表給出了各類數據類型以及對其對應的轉換規則。對象
數據類型 | 轉換爲true的值 | 轉換爲false的值 | |
---|---|---|---|
Boolean | true | false | |
String | 任何非空字符串 | ''(空字符串) | |
Number | 任何非零的數字值(包括無窮大) | 0和NaN | |
Object | 任何對象 | null | |
Undefined | n/a(不適用) | Undefined |
NaN,即非數值(Not a Number)是一個特殊的數值,這個數值用於表示一個原本要返回數值的操做數爲未返回數值的狀況(這樣就不會拋出錯誤了)。但在 ECMAScript中,任何數值除以 0會返回 NaN。
NaN有兩個不一樣尋常的特色:ip
alert(NaN == NaN); //false
函數,這個函數接受一個參數,該參數能夠是任何類型,而這個函數會幫咱們肯定這個參數是否"不是數值"。isNaN()在接收到一個值以後,會嘗試將這個值轉換爲數值。某些不是數值的值會直接轉換爲數值,例如字符串"10"或 Boolean 值。而任何不能被轉換爲數值的值都會致使這個函數返回 true。字符串
alert(isNaN(NaN)); //true alert(isNaN(10)); //false(10 是一個數值) alert(isNaN("10")); //false(能夠被轉換成數值 10) alert(isNaN("blue")); //true(不能轉換成數值) alert(isNaN(true)); //false(能夠被轉換成數值 1)
轉型函數 Number()能夠用於任何數據類型,而另兩個函數則專門用於把字符串轉換成數值原型
若是是字符串,遵循下列規則:string
var num1 = Number("Hello world!"); //NaN var num2 = Number(""); //0 var num3 = Number("000011"); //11 var num4 = Number(true); //
string類型用於表示由零或者16位Unicode字符組成的字符序列,即字符串。字符串能夠有雙引號(")或者單引號(')表示,不過以雙引號開頭的字符串也必須以雙引號結尾,而以單引號開頭的字符串必須以單引號結尾。table
var firstName = "Nicholas"; var lastName = 'Zakas'; var firstName = 'Nicholas"; // 語法錯誤(左右引號必須匹配)
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中的字符串是不可變的,也就是說,字符串一旦建立,他們的值就不能改變。要改變麼謳歌變量保存的字符串,首先要銷燬原來的字符串,而後再用另外一個包含新值的字符串填充該變量。例如
var lang = "Java"; lang = lang + "Script";
數值、布爾值、對象和字符串值 調用toString()都會返回字符串的一個副本,但 null 和 undefined 值沒有這個方法。
var age = 11; var ageAsString = age.toString(); // 字符串"11" var found = true; var foundAsString = found.toString(); // 字符串"true"
在調用數值的 toString()方法時,能夠傳遞一個參數:輸出數值的基數。默認以十進制格式返回數值的字符串表示,經過傳遞基數,toString()能夠輸出以二進制、八進制、十六進制,乃至其餘任意有效進制格式表示的字符串值。
var num = 10; alert(num.toString()); // "10" alert(num.toString(2)); // "1010" alert(num.toString(8)); // "12" alert(num.toString(10)); // "10" alert(num.toString(16)); // "a"
將任何類型的值轉換爲字符串。其轉換規則以下:
var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1)); // "10"
alert(String(value2)); // "true"
alert(String(value3)); // "null"
alert(String(value4)); // "undefined"
ECMAScript中的對象其實就是一組數據和功能的集合。對象能夠經過執行new操做符後跟要建立的對象類型名稱來建立。而建立Object類型的實例併爲其添加屬性和方法,就能夠建立自定義對象,以下所示:
var o = new Object();
Object類型所具備的任何屬性和方法也一樣存在於更具體的對象中。Object的每一個實例都具備下列屬性和方法。