2.1 javascript中的五種基礎資料型別 (Elementary Data Type)(待更新)

來源:互聯網
上載者:User

標籤:預設   範圍   正數   3.2   java   版本   賦值   格式   size   

[0]5種資料類型:

    [0.1]基礎資料型別 (Elementary Data Type):Undefined、Null、Boolean、Number、String

        [0.1.1]基本類型值是指簡單的資料區段,5種基本類型是按值訪問的,因為可以操作儲存在變數中的實際值

        [0.1.2]基本類型的值在記憶體中佔據固定大小的空間,被儲存在棧記憶體中。從一個變數向另一個變數複製基本類型的值,會建立這個值的一個副本。

        [0.1.3]不能給基本類型的值添加屬性

    [0.2]引用資料類型:Object 

      ☆重點理解和掌握部分:

        [0.2.1]參考型別值是指那些可以由多個值構成的對象。js不允許直接存取記憶體中的位置,也就是不能直接存取操作對象的記憶體空間。在操作對象時,實際上是在操作對象的引用而不是實際的對象。

        [0.2.2]參考型別的值是對象,儲存在堆記憶體中,包含參考型別值的變數實際上包含的並不是對象本身,而是一個指向該對象的指標。從一個變數向另一個變數複製參考型別的值,複製的其實是指標,因此兩個變數最終都指向同一個對象。

        [0.2.3]對於參考型別的值,可以為其添加屬性和方法,也可以改變和刪除其屬性和方法

[1]Undefined 未定義

    [1.1]Undefined類型只有一個值,就是undefined

    [1.2]var a <=> var a = undefined;   

    [1.3]對於尚未聲明過的變數,只能執行一項操作,就是使用typeof操作符檢測其資料類型【但在strict 模式下會導致錯誤】

    [1.4]出現情境:

        [1.4.1]已聲明未賦值的變數

        [1.4.2]擷取對象不存在的屬性

        [1.4.3]無傳回值的函數的執行結果

        [1.4.4]函數的參數沒有傳入

        [1.4.5]void(expression)

    [1.5]類型轉換

        Boolean(undefined):false

        Number(undefined):NaN

        String(undefined):‘undefined‘

[2]Null 空

    [2.1]Null類型只有一個值,就是null,邏輯角度看,null值表示一個Null 物件指標

    [2.2]如果定義的變數將用於儲存對象,最好將該變數初始化為null

    [2.3]實際上undefined值是派生自null值的,所以undefined == null

    [2.4]出現情境:對象不存在時

    [2.5]類型轉換

        Boolean(null):false

        Number(null):0

        String(null):‘null‘       

    [注意1]null是Null 物件指標,而[]是空數組,{}是Null 物件,三者不相同

    [注意2]null不能添加自訂屬性

[3]Boolean 布爾值

    [3.1]Boolean類型只有兩個值:true 和 false

    [3.2]出現情境:

        [3.2.1]條件陳述式導致系統執行的隱士類型轉換

        [3.2.2]字面量或變數定義

    [3.3]類型轉換

        Number(true): 1 || Number(false) : 0

        String(true):‘true‘ || String(false):‘false‘

    [3.4]Boolean()

        Boolean(undefined):false

        Boolean(null):false

        Boolean(非Null 物件包括空數組[]和Null 物件{}):true

        Boolean(非0): true || Boolean(0和NaN):false

        Boolean(非空包括空白字元串):true || Boolean(‘‘):false

    [注意]true不一定等於1,false也不一定等於0

 [4]Number 數字

    [4.1]Number類型使用IEEE754格式來表示整數和浮點數值

    [注意]可以用一個值-0來將其轉換成一個數字

    [4.2]三種字面量格式是十進位、八進位、十六進位

        [4.2.1]八進位字面值的第一位必須是0,然後是八位元字序列(0-7),如果字面值中的數值超出了範圍,那麼前置0將被忽略,後面的數值被當作十進位數解析

        [4.2.2]八進位字面量在strict 模式下是無效的,會導致js拋出錯誤

        [4.2.3]十六進位字面值的前兩位必須是0x,後跟十六進位數字序列,字母可大寫可小寫

        [4.2.4]十六進位中字面值中的數值走出範圍,如出現g,h等會報錯

        [4.2.5]在進行算術計算時,所有以八進位和十六進位表示的數值最終都將被轉換成十進位數值

    [4.3]數值表示:

        [4.3.1]js中可以儲存正0和負0,且被認為相等

        [4.3.2]浮點數值:該數值中必須包含一個小數點,並且小數點後面必須至少有一位元字。

            [4.3.2.1]由於浮點型數值需要的記憶體空間是儲存整數值的兩倍,因此js會不失時機地將浮點數值轉換成整數值,若小數點後沒有跟任何數字或者浮點值本身表示的就是一個整數,這個數值會作為整數值來儲存。

            [4.3.2.2]浮點數值的最高精度是17位小數

            [4.3.2.3]對於極大或者極小的數,可以用科學計數法e來表示的浮點數值來表示

            [4.3.2.4]預設情況下,js會將小數點後面帶有6個0以上的浮點數值轉換為以e標記法表示的數值

            [4.3.2.5]基於IEEE754數值的浮點計算的通病是舍入誤差的問題。如:0.1+0.2 === 0.3(15個0)4

        [4.3.3]js中的數值範圍是Number.MIN_VALUE(5e-324) —— Number.MAX_VALUE(1.7976931348623157e+308)

            [4.3.3.1]如果超出正數範圍,輸出Infinity(正無窮大),超出負數範圍,輸出-Infinity(負無窮大)

            [4.3.3.2]+-Infinity不能參與數值計算

            [4.3.3.3]Number.MAX_VALUE+1 != Infinity,因為電腦最多儲存52位尾數位,儲存不了1000多位,早就失去精度,即小數位全為0,所以相加不變

            [4.3.3.4]Number.MIN_VALUE - 1 != -Infinity,也是同樣的原因,所以結果為-1

            [4.3.3.5]可以用isFinite()來確定一個數值是不是有窮的,包含著隱式類型轉換Number()

            [4.3.3.6]isFinite(NaN) //false

        [4.3.4]NaN 不是數字類型

            [4.3.4.1]NaN與任何值都不相等,包括NaN本身

            [4.3.4.2]任何涉及NaN的操作都會返回NaN

            [4.3.4.3]isNaN()來判斷這個數字是不是NaN,包含著隱式類型轉換Number()

    [4.4]數值轉換:Number()可用於任何類型,parseInt()和parseFloat專門用於把字串轉換成數值

    [注意1]Number()、parseInt()、parseFloat()可以接受各種進位的數字,但對於含數位字串並不適用

    [注意2]Number()、parseInt()、parseFloat()中數字為1.2. 會報錯,但字串為‘1.2.‘則不會報錯

        [4.4.1]Number()

            Number(true):1 || Number(false):0

            Number(各種進位的數字):運算後的十進位的數字,如1.0或1.或01會以1輸出

            Number(undefined):NaN

            Number(null):0

            Number(字串):

                Number(只包含數位十進位和十六進位的字串):運算後的十進位的數字

                [注意]字串中不識別八進位,按照十進位數文書處理

                Number(‘‘和‘ ‘):0

                Number(其他情況的字串):NaN

            Number(對象):

                Number([]和[0]和[-0]):0

                Number([數字]):運算後的數字

                Number([1,2]和{}和其他對象):NaN

        [4.4.2]parseInt():在轉換字串時,會忽略字串前面的空格,直到找到第一個非空白字元。如果第一個字元不是數字字元或者負號,parseInt()就會返回NaN。如果是,則繼續解析,直到解析完成或者遇到非數字字元。

            [4.4.2.1]parseInt()可以識別出各種進位的整數,但在解析八進位字面量的字串,ECMAScript3會解析八進位,但ECMAScript5沒有解析八進位的能力

            [4.4.2.2]parseInt()函數提供第二個參數,表示多少進位,如:parseInt(‘123‘,16或10或2)

            [4.4.2.3]parseInt(各種進位的數字):運算後的十進位的數字,如1.0或1.或01會以1輸出

            [4.4.2.4]因為parseInt()是專門用來處理字串轉換數位,所以parseInt(其他類型包括‘‘)//NaN

        [4.4.3]parseFloat():類似於parseInt(),會忽略字串前面的空格,直到找到第一個非空白字元

            [4.4.3.1]parseFloat()只能解析十進位字串

            [4.4.3.2]parseFloat(各種進位的數字):運算後的十進位的數字,如1.0或1.或01會以1輸出

 [5]String:由單引號或雙引號括起來的字元序列,任何字串的長度都可以通過訪問length屬性獲得

    [5.1]字元字面量,也叫逸出序列

        \n 換行

        \t 製表

        \b 空格

        \r 斷行符號

        \f 進紙

        \\ 斜杠

        \‘ 單引號

        \" 雙引號

        \xnn 以十六進位nn表示一個字元(n為0-f),如\x41表示‘A‘

        \unnnn 以十六進位nnnn表示一個Unicode字元(n為0-f),如\u03a3表示希臘字元ε

    [5.2]ECMAScript中的字串是不可變的   

    [5.3]字串串連需要先建立一個新字串,然後在新字串中填充兩個需要拼接的字串,最後再銷毀原來的字串。這個過程在後台發生,也是在某些舊版本瀏覽器(IE6)拼接字串速度慢的原因,但後來已經解決了這個低效率問題

    [5.4]字串轉換

        [5.4.1]toString()

            Null和Undefined沒有該方法

            Boolean、Object、String有該方法

            Number使用該方法可以傳遞基數2、8、10、16,如var num = 10;num.toString(2);//1010

            但10.toString(2)會報錯,因為數字後面不能跟標識符

        [5.4.2]String()

            有toString()方法,使用toString()方法

            String(null);//‘null‘

            String(undefined);//‘undefined‘   

        [5.4.3]要把某個值轉換為字串,可以使用加號操作符把它與一個Null 字元串‘‘加在一起

   [5.4.4]如果數組中的某一項的值是null或者undefined,那麼該值在join()、toLocaleString()、toString()和valueOf()方法返回的結果中以Null 字元串表示

方法執行個體:

 1 var testString = "Hello";  2 var testBoobean = true;  3 var testUndefined = undefined;  4 var testUndefined1;  5 var testNull = null;  6 var testObject = {a:1};  7 var testFunction = function(){return;};  8    9 alert(testString);//"string" 10 alert(testBoobean);//"boolean" 11 alert(testUndefined);//"undefined" 12 alert(testUndefined1);//"undefined" 13 alert(testUndefined2);//"undefined" 14 alert(testNull);//"object" 15 alert(testObject);//"object" 16 alert(testFunction);//"function"

 

2.1 javascript中的五種基礎資料型別 (Elementary Data Type)(待更新)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.