javascript
科普向--详解JavaScript中的数据类型
對于前端的小伙伴而言,JS的數(shù)據(jù)類型可謂是必懂的知識點(diǎn)。雖然這個知識點(diǎn)很是基礎(chǔ)了,不過仍然有不少人會在這一塊犯些小錯誤。比如網(wǎng)上流傳的“JavaScriptS一切皆對象”,其實(shí)是個很不嚴(yán)謹(jǐn)?shù)恼f法,JS中只有部分?jǐn)?shù)據(jù)類型是對象;再比如有小伙伴面試回答“JS的數(shù)據(jù)類型有哪些”這類問題時(shí),給出的答案中竟然還包含了array、function。本文就是針對JavaScript中的數(shù)據(jù)類型,做一個詳細(xì)的匯總。
JavaScript中的數(shù)據(jù)類型到底有哪些
至ES6為止,JavaScript共有七種數(shù)據(jù)類型:Number、String、Boolean、Undefined、Null、Object、Symbol。其中,Number、String、Boolean、Undefined、Null、Symbol屬于簡單數(shù)據(jù)類型(也稱基本數(shù)據(jù)類型),Objec則屬于復(fù)雜數(shù)據(jù)類型,同時(shí)Symbol則是ES6新出的數(shù)據(jù)類型
1、Number
在JS中,Number這種數(shù)據(jù)類型使用IEEE754的格式來表示整數(shù)和浮點(diǎn)數(shù)值,而ECMA定義了不同的數(shù)值字面量格式
- 整數(shù)和小數(shù):1 1.1 .1
- 科學(xué)記數(shù)法: 1.23e2
- 二進(jìn)制:0b11
- 八進(jìn)制:011(后來 ES5 添加了 0o11 語法)
- 十六進(jìn)制:0x11
- 特殊數(shù)值:NaN(Not a Number,這個數(shù)值用于表示一個本來要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況)
2、String
String類型用于表示由0個或多個16位的Unicode字符組成的字符序串,字符串可以由雙引號"或者單引號'表示
- 空字符串:''
- 單行字符串:var s = '12345'
- 多行字符串:
3、Boolean
Boolean這種數(shù)據(jù)類型只有兩個取值:true和false
- a && b 在 a 和 b 都為 true 時(shí),取值為 true;否則為 false
- a || b 在 a 和 b 都為 false 時(shí),取值為 false;否則為 true
4、 Undefined
Undefined這種數(shù)據(jù)類型只有一個取值,即:undefined。在使用var聲明變量但未對變量加以初始化時(shí),這個變量的值就是undefined
5、Null
同Undefined數(shù)據(jù)類型一樣,Null這種數(shù)據(jù)類型也只有一個取值null,如果定義的變量準(zhǔn)備在將來用來保存對象,那么最合適的做法就是將這個變量初始化為null,比如:
var person = null person = {name:'wjm',gender:'male'} 復(fù)制代碼6、Object
Object之所以被稱為復(fù)雜數(shù)據(jù)類型,就是因?yàn)槠浔举|(zhì)上就是由前面的一種或多種基本數(shù)據(jù)類型(無序地)組合在一起而形成的數(shù)據(jù)
- object 的 key 一律是字符串,不存在其他類型的 key
- object[''] 是合法的,因?yàn)榭兆址彩莻€String數(shù)據(jù)類型的值
- object['key'] 可以寫作 object.key
- 注意 object.key 與 object[key] 不同
- object 里面可以有 object、array、function
- object中的屬性可以用delete操作符刪除:delete object['name']
- 一般來說,object的屬性可以用for-in語句來枚舉,值得注意的是,JS對象的屬性沒有順序,因此,通過for-in循環(huán)出的屬性名是無序的
7、Symbol
Symbol 是ES6所支持的一種新的數(shù)據(jù)類型,使用Symbol 能夠生成一個全局唯一的值,如下:
var a1 = Symbol('a') var a2 = Symbol('a') a1 !== a2 // true 復(fù)制代碼一般來說,Symbol這種數(shù)據(jù)類型,主要有以下作用:
- 作為對象屬性名避免屬性名沖突
- 替代代碼中多次使用的字符串(例如:abc),多次使用的字符串在代碼中不易維護(hù),而這時(shí)候定義一個對象的屬性(屬性名用Symbol格式),值為abc,就可以作為全局變量來使用了
- 由于以Symbol值作為名稱的屬性,不會被常規(guī)方法遍歷得到。我們可以利用這個特性,為對象定義一些非私有的、但又希望只用于內(nèi)部的方法
- 如果我們希望重新使用同一個Symbol值,Symbol.for方法可以做到這一點(diǎn)。它接受一個字符串作為參數(shù),然后搜索有沒有以該參數(shù)作為名稱的Symbol值。如果有,就返回這個Symbol值,否則就新建并返回一個以該字符串為名稱的Symbol值
以上理解,參考了阮一峰的ECMAScript 6入門
所以JavaScript中的數(shù)據(jù)類型到底有哪些,至此已經(jīng)很明朗清晰了,請隨我再回憶一遍:Number、String、Boolean、Undefined、Null、Object、Symbol。然后,不要再弄錯了喲!
如果這篇文章對你有幫助,可以的話,不妨點(diǎn)個喜歡呢
總結(jié)
以上是生活随笔為你收集整理的科普向--详解JavaScript中的数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为p30防水吗(华为P30防水吗)
- 下一篇: gradle idea java ssm