1. 程式人生 > >JS的數據類型及轉換(還是基礎的東西)

JS的數據類型及轉換(還是基礎的東西)

字符串 一個數 object int() 字符串類型 都是 轉換 array 區分

  朋友說我這是再自娛自樂,我只想說,你說的對????????!其實也不然,這算是我對自己的基礎的一次徹底性的重新梳理以及閑的無聊,找點顯得比較有意義的事情做罷了。

  回歸正題,在JS中,數據類型有哪些呢?看看下圖

  技術分享圖片

  字符串、數字、布爾類型就不細說了,這些大家都懂,說一些大家關註度比較少的東西......

  NULL和Undefined:

    NULL和Undefined一樣都只有一個值,並且都是他們本身,但是有一點特別的有意思,那就是:

      技術分享圖片

    在W3C裏事這樣解釋這兩個東西的:

      值 undefined 實際上是從值 null 派生來的,因此 ECMAScript 把它們定義為相等的。

    雖然視為相等,但是含義卻不同,undefined 是聲明了變量但未對其初始化時賦予該變量的值,null 則用於表示尚未存在的對象。意思就是,一個用於簡單數據類型,一個用於復雜數據類型。

    有一種方法很容易區分他們:typeof()。

      技術分享圖片

  接下來說一說類型轉換

  JS的數據類型事動態的,所以說,當聲明一個變量之後,這個變量的數據類型是什麽取決於它被賦予的值。

  var abc ;

  這是聲明變量了,然後:

    abc = asdfgh;這就是字符串類型的;

    abc = 123;這就是數字類型的,並且是同一個變量,而且字符串類型已經的值已經被覆蓋了;

    這就是簡單的解釋了js的數據類型是動態的。

  當然,還有很多方法,例如:.toString() parseInt() parseFloat()......這些方法,這都是直接的數據類型的轉換方法。

  當然,其實這些都不怎麽好用,最喜歡的還是一些比較直接的方法:例如什麽-1,例如什麽+個字符串類型的變量,自然而然的就是字符串類型了。這也就是所謂的隱式轉換。

  在復雜類型中,從NULL衍生到Object,這已經定義了所有的變量都是對象。字符串類型變量是對象,數字類型的變量也是對象,布爾類型的,null,undefined的全都是對象。上面圖裏面我沒有寫上數組Array,是因為我相當都的說一下。

  在Object中,通過原型鏈,我們可以得到Function、String、Number、Array這些對象。說到這裏,我想說一個搞笑的事情,再一次我的面試中,我面試官問我知不知道數據類型什麽的,然後我說我知道,人家就問我typeof一個數組,得到結果是什麽,當時我想都沒想就脫口而出是Array,並且還很是得意。人家還問我確定不,我當時很堅決的說是。面試的結果,可想而知,我晚上想到這個的時候,真心是哭笑不得,真心覺得都快丟人丟死了。自那以後我深刻的記住了,數組的typeof是object,雖然他的原型時候Array。原型和數據類型是不同的。

JS的數據類型及轉換(還是基礎的東西)