大家好,我是IT修真院武漢第10期學員,一枚正直、純潔、善良的前端程序員。
今天給大家分享一下,修真院官網(wǎng)JS任務(wù)-2,深度思考的知識點——JavaScript數(shù)據(jù)類型及常用方法。
1.背景介紹
JavaScript 是一種弱類型或者說動態(tài)語言。這意味著你不用提前聲明變量的類型,在程序運行過程中,類型會被自動確定。這也意味著你可以使用同一個變量保存不同類型的數(shù)據(jù):
2.知識剖析
原始類型
undefined:
undefined類型就一個值——undefined。在使用var申明變量時未對其初始化,那這個變量就是undefined。
Null:
Null類型也只有一個值——null。它表示一個空對象,一般用于確定要聲明一個變量為對象,但是這個對象目前還不存在。
boolean:
Boolean類型是ECMAScript中使用的最多的一種類型,該類型有兩個字面值:true和false。
轉(zhuǎn)換方法:Boolean()
Number:
Number類型用來表示整數(shù)跟浮點數(shù),還有一個特殊的數(shù)值NaN(非數(shù)值)。
數(shù)值轉(zhuǎn)換:
有三種方法:Number()、parseInt()和parseFloat()
由于Number()函數(shù)在轉(zhuǎn)換字符串的時候比較復雜,而且還不合理。因此在處理整數(shù)時更常用的是parseInt()。
parseInt(string, radix)函數(shù),將字符串轉(zhuǎn)換為整數(shù)類型的數(shù)值。它有以下規(guī)則:
????????忽略字符串前面的空格,直至找到第一個非空字符。
????????如果第一個字符不是數(shù)字符號或者負號,返回NaN。
????????如果第一個字符是數(shù)字,則繼續(xù)解析直至字符串解析完畢或者遇到一個非數(shù)字符號為止。
????????如果上步解析的結(jié)果以0開頭,則將其當作八進制來解析;如果以0x開頭,則將其當作十六進制來解析。
????????如果指定radix參數(shù),則以radix為基數(shù)進行解析。
string:
String類型用來表示所有用雙引號引起來的數(shù)據(jù),管它以前是什么妖魔鬼怪。
轉(zhuǎn)換字符串:
toString(radix)方法。除undefined和null之外的所有類型的值都具有toString()方法,其作用是返回對象的字符串表示。
object類型
在 Javascript 里,對象可以被看作是一組屬性的集合。用對象字面量語法來定義一個對象時,會自動初始化一組屬性。(也就是說,你定義一個var a = "Hello",那么a本身就會有a.substring這個方法,以及a.length這個屬性,以及其它;如果你定義了一個對象,vara= {},那么a就會自動有a.hasOwnProperty及a.constructor等屬性和方法。)而后,這些屬性還可以被增減。屬性的值可以是任意類型,包括具有復雜數(shù)據(jù)結(jié)構(gòu)的對象。屬性使用鍵來標識,它的鍵值可以是一個字符串或者符號值(Symbol)。
3.常見問題
4.解決方案
5.編碼實戰(zhàn)
6.擴展思考
有哪些方法可以判斷數(shù)據(jù)類型?
????????typeof: 返回的是string類型 判斷基本數(shù)據(jù)類型:string、number、boolean、function、undefined類型,對數(shù)組、對象、null類型都統(tǒng)統(tǒng)打印的是object類型。
????????instanceof: 返回的是boolean類型(可判斷數(shù)組類型) 判斷依據(jù):檢測對象的原型鏈上是否有構(gòu)造函數(shù)的prototype屬性。
????????constructor: 返回的是boolean類型(可判斷數(shù)組類型)任何一個對象都有constructor屬性,指向創(chuàng)建這個對象的構(gòu)造函數(shù)。
????????Object.prototype.toString.call: 方法比較通用,但是繁瑣。
7.參考文獻
Javascript數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)
《JavaScript高級程序設(shè)計》
8.更多討論
詳情請看:
問:undefined跟null的區(qū)別?
答:變量為undefined時,在后面定義可以是任何類型,這樣就可能會帶來安全的問題,而將變量賦值為null時就可以避免很多漏洞,也讓代碼更優(yōu)雅。
問:ECMAScript6新添了什么類型?
答:symbol類型,也屬于基本類型,可以是符號。。。很奇怪。
問:師兄你為什么這么博學多才?
答:要包結(jié)業(yè)?視頻遠程教學?3w+工資?抱歉,請繞道。我們,只鍛煉你的學習能力,等待你的只有大量全等級真實項目,IT修真院 ,給你不一樣的編程體驗~在這里,你甚至可以看到全棧妹子。