JS有哪些資料型別和常用方法?
這裡是修真院前端小課堂,每篇分享文從
【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴充套件思考】【更多討論】【參考文獻】
八個方面深度解析前端知識/技能,本篇分享的是:
【JS有哪些資料型別和常用方法? 】
一.背景介紹
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
六.參考文獻
七.更多討論
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”);
}
更多內容,可以加入IT交流群565734203與大家一起討論交流
這裡是技能樹·IT修真院:http://www.jsnhu.com,初學者轉行到網際網路的聚集地