數據類型

數據類型

ECMAScript中有5種簡單的數據類型(也稱基本數據類型)和 一種複雜數據類型(也稱引用類型)函數

  • 基本數據類型:Undefined、Null、Boolean、Number、String
  • 引用類型:object

1. Undefined

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

var message;
alert(message == undefined);  //true

2. Null

Null類型是第二個只有一個值得數據類型,這個特殊的值是null。null值表示空指針對象,故使用typeof操做符檢測null值時會返回"object",實際上,undefined值是派生自null值的,所以ECMA-262規定對他們的相等性測試要返回true指針

var car = null;
alert(typeof car);  // "object"

alert(null == undefined)  //true

3. Boolean

Boolean 類型是 ECMAScript 中使用得最多的一種類型,該類型只有兩個字面值:true和false。true 不必定等於 1,而 false 也不必定等於 0code

var found = true; 
var lost = false;
Boolean()

能夠對任何數據類型的值調用Boolean()函數,並且總會返回一個Boolean值。至於返回的是true仍是false,取決於要轉換值的數據類型及其實際值。下表給出了各類數據類型以及對其對應的轉換規則。對象

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

4. Number

1)NaN (Not a Number)

NaN,即非數值(Not a Number)是一個特殊的數值,這個數值用於表示一個原本要返回數值的操做數爲未返回數值的狀況(這樣就不會拋出錯誤了)。但在 ECMAScript中,任何數值除以 0會返回 NaN。
NaN有兩個不一樣尋常的特色:ip

  1. 任何涉及 NaN 的操做(例如 NaN/10)都會返回 NaN
  2. NaN 與任何值都不相等,包括 NaN 自己
alert(NaN == NaN); //false

2)isNaN()

函數,這個函數接受一個參數,該參數能夠是任何類型,而這個函數會幫咱們肯定這個參數是否"不是數值"。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)

3) 數值轉換:Number()、parseInt()和 parseFloat()

轉型函數 Number()能夠用於任何數據類型,而另兩個函數則專門用於把字符串轉換成數值原型

Number()函數的轉換規則
  • 若是是 Boolean 值true 和 false 將分別被轉換爲 1 和 0
  • 若是是數字值只是簡單的傳入和返
  • 若是是 null 值,返回 0
  • 若是是 undefined,返回 NaN
  • 若是是字符串,遵循下列規則:string

    • 若是字符串中只包含數字(包括前面帶正號或負號的狀況),則將其轉換爲十進制數值,即"1"會變成 1,"123"會變成 123,而"011"會變成 11(注意:前導的零被忽略了)
    • 若是字符串中包含有效的浮點格式,如"1.1",則將其轉換爲對應的浮點數值(一樣,也會忽略前導零)
    • 若是字符串中包含有效的十六進制格式,例如"0xf",則將其轉換爲相同大小的十進制整數值
    • 若是字符串是空的(不包含任何字符),則將其轉換爲 0
    • 若是字符串中包含除上述格式以外的字符,則將其轉換爲 NaN
  • 若是是對象,則調用對象的 valueOf()方法,而後依照前面的規則轉換返回的值。若是轉換的結果是 NaN,則調用對象的 toString()方法,而後再次依照前面的規則轉換返回的字符串值。
var num1 = Number("Hello world!"); //NaN 
 var num2 = Number(""); //0 
 var num3 = Number("000011"); //11 
 var num4 = Number(true); //
2.parseInt()
3.parseFloat()

5. String

string類型用於表示由零或者16位Unicode字符組成的字符序列,即字符串。字符串能夠有雙引號(")或者單引號(')表示,不過以雙引號開頭的字符串也必須以雙引號結尾,而以單引號開頭的字符串必須以單引號結尾。table

var firstName = "Nicholas"; 
var lastName = 'Zakas';
var firstName = 'Nicholas"; // 語法錯誤(左右引號必須匹配)

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表示希臘字符Σ
2)字符傳的特色

ECMAScript中的字符串是不可變的,也就是說,字符串一旦建立,他們的值就不能改變。要改變麼謳歌變量保存的字符串,首先要銷燬原來的字符串,而後再用另外一個包含新值的字符串填充該變量。例如

var lang = "Java";
lang = lang + "Script";

3)轉換爲字符串 

(1)toString()

數值、布爾值、對象和字符串值 調用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"
(2)String()

將任何類型的值轉換爲字符串。其轉換規則以下:

  • 若是值有toString()方法,則調用該方法(沒有參數)並返回相應的結果
  • 若是值是null,則返回"null"
  • 若是值是undefined,則返回"undefined"

    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"

6. Object

ECMAScript中的對象其實就是一組數據和功能的集合。對象能夠經過執行new操做符後跟要建立的對象類型名稱來建立。而建立Object類型的實例併爲其添加屬性和方法,就能夠建立自定義對象,以下所示:

var o = new Object();

Object類型所具備的任何屬性和方法也一樣存在於更具體的對象中。Object的每一個實例都具備下列屬性和方法。

  • constructor:保存着用於建立當前對象的函數。對於前面的例子而言,構造函數(constructor)就是Object()。
  • hasOwnProperty(propertyName): 用於檢查給定的屬性在當前對象實例中(而不是在實例的原型中)是否存在。其中,做爲參數的屬性名(propertyName)必須以字符串形式指定(例如:o.hasOwnProperty('name'))。
  • propertyIsEnumerable(propertyName): 用於檢查給定的屬性是否可以使用 for-in 語句來枚舉。與 hasOwnProperty()方法同樣,做爲參數的屬性名必須以字符串形式指定
  • toLocaleString():返回對象的字符串表示,該字符串與執行環境的地區對應。
  • toString():返回對象的字符串表示。
  • valueOf():返回對象的字符串、數值或布爾值表示。一般與 toString()方法的返回值相同
相關文章
相關標籤/搜索