1. 程式人生 > >JS有哪些資料型別和常用方法?

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

六.參考文獻

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”); 
}

 

 

PPT連結 視訊連結

 

 

更多內容,可以加入IT交流群565734203與大家一起討論交流

 

這裡是技能樹·IT修真院:http://www.jsnhu.com,初學者轉行到網際網路的聚集地