JavaScript有哪些數據類型和常用方法?

一.背景介紹

       JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱爲JavaScript引擎,爲瀏覽器的一部分,廣泛用於客戶端的腳本語言,最早是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。

二.知識剖析

2.1 JS有哪些數據類型?

      JavaScript語言的每一個值,都屬於某一種數據類型。JavaScript的數據類型,共有六種。分別是undefined、null、boolean、number、string、object(ES6新增第七種Symbol一種數據類型,它的實例是唯一且不可改變的。類型的值)

      1)Undefined:Undefined類型只有一個值,即特殊值undefined。在使用var聲明變量,但未對其加以初始化時,這個變量值就是undefined。

       2)Null:Null類型是第二個只有一個值的數據類型。其特殊值就是Null。從邏輯角度上看,null是一個空的對象指針。而這也正是使用typeof操作符檢測null值,會返回“object”的原因。

       3)Boolean:即布爾類型,該類型有兩個值:true

false。需要注意的是,Boolean類型的字面值true和false是區分大小寫的。也就是說,True和False(以及其它的混合大小形式)都不是Boolean值,只是標識符。

        4)Number:該類型的表示方法有兩種形式,第一種是整數,第二種爲浮點數。整數:可以通過十進制,八進制,十六進制的字面值來表示。浮點數:就是該數值中必須包含一個小數點,且小數點後必須有一位數字。

        5)String:String類型用於表示由零或多個16位的Unicode字符組成的字符序列,即字符串。至於用單引號,還是雙引號,在js中還是沒有差別的。記得成對出現。

        6)Object:Object數據類型,稱爲對象,是一組數據和功能(函數)的集合。可以用new操作符後跟要創建的對象類型的名稱來創建。也可以用字面量表示法創建。在其中添加不同名(包含空字符串在內的任意字符串)的屬性。

2.2 JS數據類型的常用方法

這裏介紹6種:Boolean()、toString()、String()、isNaN()、Number()、parseInt()。

實例:demo1

注:看demo的時候,打開控制檯看console.log()的結果。

三.常見問題

怎麼樣判斷各種數據類型?

四.解決方案

這裏介紹2種方法:typeof、Object.prototype.toString

1)typeof:用來判斷各種數據類型,有兩種寫法:typeofxxx,typeof(xxx)。

實例:demo2

       總結:如果右邊的是基本類型,則typeof會嘗試得到最基本的類型,比如number,string等等,如果是函數名,那麼則返回function,這裏Object,Number,String,等等都可以看成函數名,如果右邊是一個基本的對象,則返回object(返回的都是小寫哦)。

 注:我們發現typeof null,結果返回了object,這是一個很早之前的BUG,一直沿用至今。

試用範圍:如果通過typeof來判斷類型,適用於判定基本類型,或者判斷是否爲函數(function)。

2)Object.prototype.toString。

實例:demo3

       需要注意的是,必須通過Object.prototype.toString.call來獲取,而不能直接new Date().toString(),從原型鏈的角度講,所有對象的原型鏈最終都指向了Object,按照JS變量查找規則,其他對象應該也可以直接訪問到Object的toString方法,而事實上,大部分的對象都實現了自身的toString方法,這樣就可能會導致Object的toString被終止查找,因此要用call來強制執行Object的toString方法。

 

五.拓展思考

JavaScript類型轉換有哪些?以及如何轉換?

更多請參考:http://www.runoob.com/js/js-type-conversion.html

六.參考文獻

w3school

腳本之家

七.更多討論

Q1:如何判斷是否是null值
使用typeof會返回object
instanceof會報錯
constructor會報錯
Object.prototype.toString.call返回[object Null]

Q2:typeof的侷限性
if(typeof a!=”undefined”){alert(“ok”)},而不要去使用 if(a) 因爲如果 a 不存在(未聲明)則會出錯,對於 Array,Null 等特殊對象使用 typeof 一律返回 object,這正是 typeof 的侷限性

Q3:判斷NaN:
var tmp = 0/0; 
if(isNaN(tmp)){ 
alert(“NaN”); 
}

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