JS基礎篇1:數據類型(8種)

最近有很多人說數據類型是 6種。我怎麼記得JS的數據類型有8種。最近發現好多人對JS的基礎不太瞭解。很多數據類型都沒有搞清楚。不BB,我就按我的理解寫一波筆記,每次看一波書我就感覺一次比一次多懂一點。來補下知識點。。。。

JS數據類型:基礎概念 

請注意:JS的數據類型有8種

在ES5的時候,我們認知的數據類型確實是 6種:Number、String、Boolean、undefined、object、Null。

ES6 中新增了一種 Symbol 。這種類型的對象永不相等,即始創建的時候傳入相同的值,可以解決屬性名衝突的問題,做爲標記。

谷歌67版本中還出現了一種 bigInt。是指安全存儲、操作大整數。(但是很多人不把這個做爲一個類型)。

JS數據類型:JS 的數據類型有幾種?

     8種。Number、String、Boolean、Null、undefined、object、symbol、bigInt。

JS數據類型:Object 中包含了哪幾種類型?

      其中包含了Data、function、Array等。這三種是常規用的。

JS數據類型:JS的基本類型和引用類型有哪些呢?

    基本類型(單類型):除Object。 String、Number、boolean、null、undefined。

    引用類型:object。裏面包含的 function、Array、Date。

    基本類型的實例:

    引用類型的實例:

JS數據類型:JS 中 typeof 輸出分別是什麼?

    { } 、[ ] 輸出 object。

    console.log( ) 輸出 function。

    注意一點:NaN 是 Number 中的一種,非Number 。

String

String

字符串

Number

Number

數據類型

Boolean

Boolean

布爾型

Undefined

Undefined

沒有初始化、定義的值

Null

Object

不存在的對象

NaN

Number

Number 中的特殊數值

Object

Function

 

    1、假設: Number('as') == NaN ?

            肯定是false, Number(‘as’) 輸出 NaN。

           注)用 isNaN() 檢測是否是非數值型。

            

            請注意這裏 isNaN 幫我轉成 true 。        

            期間我一直在糾結 Number(‘as’) 輸出 NaN ?NaN == NaN 爲什麼是 false。其實 js 規定的NaN 不等於NaN。

    2、假設:Number('123') == NaN ?

        肯定是false,Number('123’) 輸出 123。

JS數據類型:如何判斷數據類型?

1、typeof 操作符(通用:上面有內容有講到)

2、toString ( )    

    作用:其他類型轉成 string 的方法

    支持:number、boolean、string、object 

    不支持:null 、undefined

    

3、toLocaleString ( )

    把數組轉成本地字符串  

    

 

4、檢測數組類型的方法         

     ① instanceof  操作符

          

    ②對象的 constructor 屬性

            

      ③ Array.isArray( ) 檢驗值是否爲數組

            

JS數據類型:null 和 undefined 有什麼區別?

    Null 只有一個值,是 null。不存在的對象。

    Undefined 只有一個值,是undefined。沒有初始化。undefined 是從 null 中派生出來的。

    簡單理解就是:undefined 是沒有定義的,null 是定義了但是爲空。

JS數據類型:null 不存在的原因是什麼?如何解決?

   不存在的原因是:

                1、方法不存在

                2、對象不存在

                3、字符串變量不存在

                4、接口類型對象沒初始化 

    解決方法:

                做判斷處理的時候,放在設定值的最前面

JS數據類型:== 和 === 有什麼區別,什麼場景下使用?

    == 表示相同。

            比較的是物理地址,相當於比較兩個對象的 hashCode ,肯定不相等的。

            類型不同,值也可能相等。

    === 表示嚴格相同。

            例:同爲 null/undefined ,相等。

    簡單理解就是 == 就是先比較數據類型是否一樣。=== 類型不同直接就是 false。

JS數據類型:對象可以比較地?

    對象是可以比較,遍歷比較key 和 value就行, Object.is(value1, value2)。

JS數據類型:總結

    1、Undefined 類型

        只有一個值。在使用var 聲明變量但未對其加初始化時,這個變量就是undefined。

        

    2、Null 類型

        只有一個值。null是表示一個空對象指針,這也是typeof操作符檢測 null 值時會返回 object 的原因。

    3、Boolean 類型

        使用最多的一個類型,有兩個字面值,分別是true、false。true不一定等於1,false不一定等於0。

        boolean類型的字面值是區分大小寫的。True和False是標識符

          

    4、Number 類型

        數字類型,表示數據的整數和浮點數。某些語言中也稱爲“雙精度值”。

 

        var intNum = 55;十進制

        var num = 012;八進制

        var octalNum = 0x23;十六進制

    5、String 類型

        字符串可以有單引號、雙引號表示。字符串是不可變的,一旦創建,值就不能改變

        要改變某個變量保存的字符串,首先要銷燬原來的字符串,然後於用另一個包含的字符串填充該變量。

 

        

 

        注)toString()可以輸出二進制、八進制、十進制,十六進制。

               null和undefined沒有toString()方法,用String函數不返回這兩個值的字面量。

    6、Object 類型

        ECMAjavascript中的對象其實就是一組數據和功能的集合。對象可以通過執行new操作符後跟要創建的對象類型的名稱來創建。創建object類型的實例併爲其添加屬性(或)方法,就可以自定義創建對象。

        如:var o = new Object( );

        object 的每個實例都有下列屬性和方法:

        constructor:保存着用於創建當前對象的函數。(構造函數)constructor就是object();

        hasOwnProperty(propertyName):用於檢查給定的當前屬性在當前對象實例中)而不是在實例原型中)是否存在。其中,作爲參數的屬性名(propertyName)必須以字稚串形式指定(例如:o.hasOwnProperty(“name”))。

        isPrototypeOf(object):用於檢查傳入的對象是否是傳入對象原型。

        propertyIsEnumerable(propertyName):用於檢查給定屬性是否能夠用for-in語句。與hasOwnProperty()方法一樣,作爲參數的屬性名必須以字符串形式指定。

        toLocaleString( ):返回對象的字符串表示,該字符串與執行環境的地區對應。

        toString( ):返回對象的字符串表示。

        valueOf( ):返回對象的字符串、數值或者布爾值表示。通常與toString( )方法的返回值得相同。

        ECMAJS中object是所有對象的基礎,因些所有對象都具有這些基本的屬性和方法。

    7、 Symbol 類型

        Symbol 類型的對象永遠不相等,即便創建的時候傳入相同的值。因此,可以用解決屬性名衝突的問題(適用於多少編碼),做爲標記。

        這是 es6 新增的數據類型。    

        

    8、BigInt 類型

        Javascript 中的任意精度整數,可以安全存儲和操作大整數。即始超出 Number 能夠表示的安全整數範圍。是 chrome 67中的新功能。

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章