js資料類型

來源:互聯網
上載者:User

標籤:his   建立   tostring   tom   存在   適合   head   int()   vol   

一、js資料類型

string、number、Boolean、Array、object、Null、Undefined

1. js擁有動態類型

 相同的變數可以用作不同的類型

var x                // x 為 undefinedvar x = 6;           // x 為數字var x = "Bill";      // x 為字串

 

2. 資料類型
  • string
    儲存字元,可用單引號或雙引號
  • number
    可帶小數點或不帶(支援科學記號標記法)
  • Boolean
    true  或   false
  • array
    //先建立再賦值var cars=new Array();cars[0]="Audi";cars[1]="BMW";cars[2]="Volvo";//建立的同時賦值var cars=new Array("Audi","BMW","Volvo");//直接賦值var cars=["Audi","BMW","Volvo"];
  • object
    由花括弧分隔,括弧內部,對象的屬性以名稱和索引值對的形式定義,屬性用逗號分隔
    var person={    firstname : "Bill",    lastname  : "Gates",    id        :  5566};
    //兩種定址方式name=person.lastname;name=person["lastname"];
  • undefined
    當聲明的變數還未被初始化時,變數的預設值為undefined
    // 典型用法var i;i                     // 變數被聲明了,但沒有賦值function f(x){console.log(x)}f()                  //調用函數時,應該提供的參數沒有提供,該參數等undefinedvar  o = new Object();o.p                 // 對象沒有賦值的屬性,該屬性的值為undefinedvar x = f();x                    // 函數沒有傳回值時,預設返回undefined
  • null
    尚未存在的對象
    // 典型用法(1) 作為函數的參數,表示該函數的參數不是對象。(2) 作為對象原型鏈的終點。

  undefined 與 null

  null即是一個不存在的對象的預留位置

  ECMAScript認為undefined是從null派生出來的,所以把它們定義為相等的。

  區分: 

concole.log(null === undefined);     //   false concole.log(typeof null == typeof undefined); //  false

 

二、 js資料類型轉換 1. 轉換函式
  • 轉換成字串(tostring)
    // numbervar iNum = 10;alert(iNum.toString());    //輸出 "10"//Booleanvar bool = false;alert(bool .toString());    //輸出 "false"//基模式var iNum = 10;alert(iNum.toString(2));    //輸出 "1010"alert(iNum.toString(8));    //輸出 "12"alert(iNum.toString(16));    //輸出 "A"
  • 轉換成數字
    parseInt()   parseFloat()
    /*parseInt() 方法首先查看位置 0 處的字元,判斷它是否是個有效數字;如果不是,該方法將返回 NaN,不再繼續執行其他動作。*//*但如果該字元是有效數字,該方法將查看位置 1 處的字元,進行同樣的測試。這一過程將持續到發現非有效數位字元為止,此時 parseInt() 將把該字元之前的字串轉換成數字。*/var iNum1 = parseInt("12345red");          //返回 12345var iNum1 = parseInt("0xA");               //返回 10var iNum1 = parseInt("56.9");              //返回 56  小數點是無效字元var iNum1 = parseInt("red");               //返回 NaN// parseFloat() 方法與 parseInt() 方法的處理方式相似// 但第一個出現的小數點是有效字元var fNum4 = parseFloat("11.22.33");        //返回 11.22    

 

2. 強制類型轉換

  ECMAScript 中可用的 3 種強制類型轉換:Boolean、Number、String

  • Boolean(value) 
    // 當要轉換的值是至少有一個字元的字串、非 0 數字或對象時,Boolean() 函數將返回 true// 如果該值是Null 字元串、數字 0、undefined 或 null,它將返回 falsevar b1 = Boolean("");             //false - Null 字元串var b2 = Boolean("hello");        //true - 非Null 字元串
  • Number(value)
    // Number() 函數的強制類型轉換與 parseInt() 和 parseFloat() 方法的處理方式相似,只是它轉換的是整個值,而不是部分值。var iNum1 = parseInt("56.9");          //返回 56var fNum2 = parseFloat("11.22.33");    //返回 11.22var iNum3 = Number("56.9");            //返回 56.9var fNum2 = Number("11.22.33");        //返回 NaN

  • String(value) 
    可把任何值轉換成字串

 

三、js資料類型判斷1. typeOf
類型 結構
Undefined "undefined"
Null "object" (見下方)
布爾值 "boolean"
數值 "number"
字串 "string"
Symbol (ECMAScript 6 新增) "symbol"
宿主對象(JS環境提供的,比如瀏覽器) Implementation-dependent
函數對象 (implements [[Call]] in ECMA-262 terms) "function"
任何其他對象 "object"

 

2. instanceof (判斷已知物件類型)  instance:執行個體,例子,所以instanceof 用於判斷 一個變數是否某個對象的執行個體,是一個三目運算式  instanceof 運算子用於識別正在處理的對象的類型,要求開發人員明確地確認對象為某特定類型在使用   instanceof檢測變數類型時,我們是檢測不到number, ‘string‘, bool的類型的
var a = [],      b = new Date();function c(name){    this.name = name;}console.log(a instanceof Array) ----------> truealert(b instanceof Date)  ----------------> truealert(c instanceof Function) -------------> truealert(c instanceof function) -------------> false// 注意:instanceof 後面一定要是物件類型,並且大小寫不能錯,該方法適合一些條件選擇或分支。

 

3. constructor(根據對象的constructor判斷)

  W3C定義:constructor 屬性返回對建立此對象的數組函數的引用(返回對象對應的建構函式)

  constructor本來是原型對象上的屬性,指向建構函式。但是根據執行個體對象尋找屬性的順序,若執行個體對象上沒有執行個體屬性或方法時,就去原型鏈上尋找,因此,執行個體對象也是能使用constructor屬性的

  

var a = new Array();console.log(a instanceof Array) // a是否Array的執行個體  trueconsole.log(a.constructor == Array)  //  a執行個體所對應的建構函式是否為Array  true//examplefunction Dog(name){    this.name=name;}var Dollar=new Dog("Dollar");console.log(Dollar.constructor); //輸出function Dog(name){this.name=name;}function Dog(){ }var Tim = new Dog(); console.log(Tom.constructor === Dog);//true// constructor屬性是可以被修改的,會導致檢測出的結果不正確function Dog(){ }function Cat(){ }Cat.prototype = new Dog();var m= new Cat();console.log(m.constructor==Cat); // falseconsole.log(John.constructor==Person); // true// instanceof 對於直接或間接引用都是trueconsole.log(m instanceof Cat); // trueconsole.log(John instanceof Person); // true

 

4. Object.prototype.toString.call 
function a() { }; var toString = Object.prototype.toString;console.log(toString.call(new Date) === ‘[object Date]‘);   //trueconsole.log(toString.call(new String) ===‘[object String]‘);//trueconsole.log(toString.call(a) ===‘[object Function]‘);       //true

 

5. $.type()(萬能判斷)
jQuery.type( undefined ) === "undefined"          // truejQuery.type() === "undefined"                     // truejQuery.type( null ) === "null"                    // truejQuery.type( true ) === "boolean"                 // true

 

如有建議或補充,歡迎留言交流~

參考:

http://www.jb51.net/article/73566.htm

js資料類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.