欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript中的五種基本數(shù)據(jù)類型

 更新時間:2015年08月26日 10:13:37   投稿:hebedich  
在javascript中申明變量使用的關(guān)鍵字都是var,這點與其他的編程語言不盡相同,但是javascript亦含有五種基本的數(shù)據(jù)類型(也可以說是簡單數(shù)據(jù)類型),它們分別是:Undefined,Null,Boolean,Number和String。還含有一種復(fù)雜數(shù)據(jù)類型—Object。這里我們不談復(fù)雜數(shù)據(jù)類型

[0]5種數(shù)據(jù)類型:

    [0.1]基本數(shù)據(jù)類型:Undefined、Null、Boolean、Number、String

        [0.1.1]基本類型值是指簡單的數(shù)據(jù)段,5種基本類型是按值訪問的,因為可以操作保存在變量中的實際值

        [0.1.2]基本類型的值在內(nèi)存中占據(jù)固定大小的空間,被保存在棧內(nèi)存中。從一個變量向另一個變量復(fù)制基本類型的值,會創(chuàng)建這個值的一個副本。

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

    [0.2]引用數(shù)據(jù)類型:Object

        [0.2.1]引用類型值是指那些可以由多個值構(gòu)成的對象。js不允許直接訪問內(nèi)存中的位置,也就是不能直接訪問操作對象的內(nèi)存空間。在操作對象時,實際上是在操作對象的引用而不是實際的對象。

        [0.2.2]引用類型的值是對象,保存在堆內(nèi)存中,包含引用類型值的變量實際上包含的并不是對象本身,而是一個指向該對象的指針。從一個變量向另一個變量復(fù)制引用類型的值,復(fù)制的其實是指針,因此兩個變量最終都指向同一個對象。

        [0.2.3]對于引用類型的值,可以為其添加屬性和方法,也可以改變和刪除其屬性和方法

[1]Undefined

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

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

    [1.3]對于尚未聲明過的變量,只能執(zhí)行一項操作,就是使用typeof操作符檢測其數(shù)據(jù)類型【但在嚴格模式下會導(dǎo)致錯誤】

    [1.4]出現(xiàn)場景:

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

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

        [1.4.3]無返回值的函數(shù)的執(zhí)行結(jié)果

        [1.4.4]函數(shù)的參數(shù)沒有傳入

        [1.4.5]void(expression)

    [1.5]類型轉(zhuǎn)換

        Boolean(undefined):false

        Number(undefined):NaN

        String(undefined):'undefined'

[2]Null

    [2.1]Null類型只有一個值,就是null,邏輯角度看,null值表示一個空對象指針

    [2.2]如果定義的變量將用于保存對象,最好將該變量初始化為null

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

    [2.4]出現(xiàn)場景:對象不存在時

    [2.5]類型轉(zhuǎn)換

        Boolean(null):false

        Number(null):0

        String(null):'null'       

    [注意1]null是空對象指針,而[]是空數(shù)組,{}是空對象,三者不相同

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

[3]Boolean

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

    [3.2]出現(xiàn)場景:

        [3.2.1]條件語句導(dǎo)致系統(tǒng)執(zhí)行的隱士類型轉(zhuǎn)換

        [3.2.2]字面量或變量定義

    [3.3]類型轉(zhuǎn)換

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

        String(true):'true' || String(false):'false'

    [3.4]Boolean()

        Boolean(undefined):false

        Boolean(null):false

        Boolean(非空對象包括空數(shù)組[]和空對象{}):true

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

        Boolean(非空包括空格字符串):true || Boolean(''):false

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

 [4]Number

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

    [注意]可以用一個值-0來將其轉(zhuǎn)換成一個數(shù)字

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

        [4.2.1]八進制字面值的第一位必須是0,然后是八進制數(shù)字序列(0-7),如果字面值中的數(shù)值超出了范圍,那么前導(dǎo)0將被忽略,后面的數(shù)值被當作十進制數(shù)解析

        [4.2.2]八進制字面量在嚴格模式下是無效的,會導(dǎo)致js拋出錯誤

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

        [4.2.4]十六進制中字面值中的數(shù)值走出范圍,如出現(xiàn)g,h等會報錯

        [4.2.5]在進行算術(shù)計算時,所有以八進制和十六進制表示的數(shù)值最終都將被轉(zhuǎn)換成十進制數(shù)值

    [4.3]數(shù)值表示:

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

        [4.3.2]浮點數(shù)值:該數(shù)值中必須包含一個小數(shù)點,并且小數(shù)點后面必須至少有一位數(shù)字。

            [4.3.2.1]由于浮點型數(shù)值需要的內(nèi)存空間是保存整數(shù)值的兩倍,因此js會不失時機地將浮點數(shù)值轉(zhuǎn)換成整數(shù)值,若小數(shù)點后沒有跟任何數(shù)字或者浮點值本身表示的就是一個整數(shù),這個數(shù)值會作為整數(shù)值來保存。

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

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

            [4.3.2.4]默認情況下,js會將小數(shù)點后面帶有6個0以上的浮點數(shù)值轉(zhuǎn)換為以e表示法表示的數(shù)值

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

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

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

            [4.3.3.2]+-Infinity不能參與數(shù)值計算

            [4.3.3.3]Number.MAX_VALUE+1 != Infinity,因為計算機最多保存52位尾數(shù)位,保存不了1000多位,早就失去精度,即小數(shù)位全為0,所以相加不變

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

            [4.3.3.5]可以用isFinite()來確定一個數(shù)值是不是有窮的,包含著隱式類型轉(zhuǎn)換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()來判斷這個數(shù)字是不是NaN,包含著隱式類型轉(zhuǎn)換Number()

    [4.4]數(shù)值轉(zhuǎn)換:Number()可用于任何類型,parseInt()和parseFloat專門用于把字符串轉(zhuǎn)換成數(shù)值

    [注意1]Number()、parseInt()、parseFloat()可以接受各種進制的數(shù)字,但對于含數(shù)字的字符串并不適用

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

        [4.4.1]Number()

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

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

            Number(undefined):NaN

            Number(null):0

            Number(字符串):

                Number(只包含數(shù)字的十進制和十六進制的字符串):運算后的十進制的數(shù)字

                [注意]字符串中不識別八進制,按照十進制數(shù)字處理

                Number(''和' '):0

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

            Number(對象):

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

                Number([數(shù)字]):運算后的數(shù)字

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

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

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

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

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

            [4.4.2.4]因為parseInt()是專門用來處理字符串轉(zhuǎn)換數(shù)字的,所以parseInt(其他類型包括'')//NaN

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

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

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

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

    [5.1]字符字面量,也叫轉(zhuǎn)義序列

        \n 換行

        \t 制表

        \b 空格

        \r 回車

        \f 進紙

        \\ 斜杠

        \' 單引號

        \" 雙引號

        \xnn 以十六進制nn表示一個字符(n為0-f),如\x41表示'A'

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

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

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

    [5.4]字符串轉(zhuǎn)換

        [5.4.1]toString()

            Null和Undefined沒有該方法

            Boolean、Object、String有該方法

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

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

        [5.4.2]String()

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

            String(null);//'null'

            String(undefined);//'undefined'   

        [5.4.3]要把某個值轉(zhuǎn)換為字符串,可以使用加號操作符把它與一個空字符串''加在一起

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

最后給大家一個簡單的例子說明下這五種基本類型的不同

var testString = "Hello"; 
var testBoobean = true; 
var testUndefined = undefined; 
var testUndefined1; 
var testNull = null; 
var testObject = {a:1}; 
var testFunction = function(){return;}; 
 
alert(testString);//"string" 
alert(testBoobean);//"boolean" 
alert(testUndefined);//"undefined" 
alert(testUndefined1);//"undefined" 
alert(testUndefined2);//"undefined" 
alert(testNull);//"object" 
alert(testObject);//"object" 
alert(testFunction);//"function"

相關(guān)文章

  • JavaScript Event學習補遺 addEventSimple

    JavaScript Event學習補遺 addEventSimple

    這里有個addEventSimple和removeEventSimple函數(shù),有時候需要不那么顯眼的事件處理程序的時候我就用這兩個函數(shù)注冊。
    2010-02-02
  • 如何用JS/HTML將時間戳轉(zhuǎn)換為“xx天前”的形式

    如何用JS/HTML將時間戳轉(zhuǎn)換為“xx天前”的形式

    如果我們有一份過去時間戳,如何使用JS/HTML將時間戳轉(zhuǎn)換為“xx天前”的形式呢?很多朋友都覺得解決辦法有點困難,其實很簡單的,下面小編給大家分享完整的實現(xiàn)代碼,一起看看吧
    2017-02-02
  • JS模擬實現(xiàn)哈希表及應(yīng)用詳解

    JS模擬實現(xiàn)哈希表及應(yīng)用詳解

    這篇文章主要介紹了JS模擬實現(xiàn)哈希表及應(yīng)用,結(jié)合實例形式分析了javascript模擬實現(xiàn)哈希表的步驟、相關(guān)操作技巧與使用方法,需要的朋友可以參考下
    2018-05-05
  • Java SE 9 多版本兼容 JAR 包示例

    Java SE 9 多版本兼容 JAR 包示例

    這篇文章主要介紹了Java SE 9 多版本兼容 JAR 包示例,Java 9 版本中增強了Jar 包多版本字節(jié)碼文件格式支持,也就是說在同一個 Jar 包中我們可以包含多個 Java 版本的 class 文件,更多相關(guān)內(nèi)容感興趣的小伙伴可以參考一下
    2022-08-08
  • JS中實現(xiàn)replaceAll的方法(實例代碼)

    JS中實現(xiàn)replaceAll的方法(實例代碼)

    本文是對JS中實現(xiàn)replaceAll的方法進行了詳細的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • JavaScript實現(xiàn)x秒后自動跳轉(zhuǎn)到一個頁面

    JavaScript實現(xiàn)x秒后自動跳轉(zhuǎn)到一個頁面

    今天看視頻學習時學習了一種新技術(shù),即平時我們在一個頁面點擊“提交”或“確認”會自動跳轉(zhuǎn)到一個頁面,在網(wǎng)上搜了一下,關(guān)于這個技術(shù)處理有多種方法,有興趣的朋友可以參考下
    2013-01-01
  • Bootstrap CSS布局之代碼

    Bootstrap CSS布局之代碼

    這篇文章主要介紹了Bootstrap CSS布局之代碼的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Canvas實現(xiàn)放射線動畫效果

    Canvas實現(xiàn)放射線動畫效果

    本文主要分享了Canvas實現(xiàn)放射線動畫的示例代碼。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • JavaScript中防抖和節(jié)流的實戰(zhàn)應(yīng)用記錄

    JavaScript中防抖和節(jié)流的實戰(zhàn)應(yīng)用記錄

    防抖與節(jié)流都是用來限制用戶頻發(fā)觸發(fā)事件的機制,下面這篇文章主要給大家介紹了關(guān)于JavaScript中防抖和節(jié)流的實戰(zhàn)應(yīng)用,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • 小程序列表懶加載的實現(xiàn)方式

    小程序列表懶加載的實現(xiàn)方式

    懶加載,前端人都知道的一種性能優(yōu)化方式,簡單的來說,只有當圖片出現(xiàn)在瀏覽器的可視區(qū)域內(nèi)時,才設(shè)置圖片正真的路徑,讓圖片顯示出來,這篇文章主要給大家介紹了關(guān)于小程序列表懶加載的實現(xiàn)方式,需要的朋友可以參考下
    2022-04-04

最新評論