小編給大家分享一下JavaScript數(shù)據(jù)類型是什么,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的柯橋網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
最近面試了三個(gè)開發(fā),他們都沒有說清楚JS的基本類型有哪些。而且往往錯(cuò)誤的說了一些C語言的數(shù)據(jù)類型,例如int, float, double之類的數(shù)據(jù)類型。
無論什么語言,熟練掌握數(shù)據(jù)類型都是這門語言最根本的知識(shí)點(diǎn)
JS數(shù)據(jù)類型分為兩類,一類是基本類型,他們有
js的基本類型就這么幾個(gè),除此之外,其他的類型都是對(duì)象。
Number類型
在JS沒有整型,float,或者double類型的數(shù)值,所有數(shù)值統(tǒng)一叫做Number類型。
JS使用IEEE754格式表示整數(shù)和浮點(diǎn)數(shù),一般來說整數(shù)占用了32位,而浮點(diǎn)數(shù)數(shù)占用64位。因?yàn)楦↑c(diǎn)數(shù)占用的內(nèi)存空間是整數(shù)的兩倍,所以js會(huì)適當(dāng)?shù)陌迅↑c(diǎn)數(shù)轉(zhuǎn)化為整數(shù)儲(chǔ)存。
4.0 === 4 // true
數(shù)值類型都是有大小范圍的
Number.MAX_VALUE // 1.7976931348623157e+308 Number.MIN_VALUE // 5e-324 Number.MAX_SAFE_INTEGER // 9007199254740991 Number.MIN_SAFE_INTEGER // -9007199254740991
浮點(diǎn)數(shù)一般都是計(jì)算結(jié)果不準(zhǔn)確的,這不是JS的問題,所有語言中都有這個(gè)問題。
計(jì)算0.1 + 0.2 === 0.3
這個(gè)結(jié)果永遠(yuǎn)是false。
要比較浮點(diǎn)數(shù)是否相等,可以采用Number.EPSILON
, Number.EPSILON是一個(gè)非常小的數(shù)值,如果兩個(gè)浮點(diǎn)數(shù)相減小于Number.EPSILON, 則可以為認(rèn)為是相等。
Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON // true
Number類型中有三個(gè)比較特殊的兄弟
數(shù)值類型一旦變成這三個(gè)兄弟,就無法參與后續(xù)的數(shù)值運(yùn)算。
String類型
從靜態(tài)語言過來的同學(xué),遇到字符串就會(huì)問個(gè)問題:請(qǐng)問你能裝多少個(gè)字符串呢?
字符串傻傻一笑,說:自從我誕生以來,從來就沒被裝滿過!
ECMAScript 2016 (ed. 7) established a maximum length of 2^53 - 1 elements. Previously, no maximum length was specified. In Firefox, strings have a maximum length of 230 - 2 (~1GB). In versions prior to Firefox 65, the maximum length was 228 - 1 (~256MB). --MDN
Boolean
Boolean值很簡單,就false和true兩個(gè)值。但是很多人不能完全回答出,哪些值會(huì)被轉(zhuǎn)換成false。
除了下面幾個(gè)能夠被轉(zhuǎn)成false的值,其他都是true。
false '' NaN undefined 0, -0, +0 null
undefined 和 null
undefined表示一個(gè)變量被定義了,但是沒有被賦值。null表示這個(gè)變量根本沒被定義。總之,無論是undefined和null,他們基本上都是不能使用的值。
null類型有個(gè)特別的作用。比如有個(gè)對(duì)象,有很多屬性,這時(shí)候你想把這個(gè)變量給標(biāo)記為可以被垃圾回收了,那么就可以把它的值設(shè)置為null。
最熟悉的陌生人: 對(duì)象
我曾認(rèn)為對(duì)象在js中是最簡單的,而實(shí)際上,是我太天真。
// 定義一個(gè)對(duì)象,so easy var boy = { name: 'wangduanduan' }
var boy = {} Object.defineProperty(boy, 'name', { writable: false, value: 'wdd' }) boy.name = 'ddw' // 設(shè)置不會(huì)生效,boy.name的值還是wdd
對(duì)象的數(shù)據(jù)屬性
數(shù)據(jù)屬性 | 默認(rèn)值 | 說明 |
---|---|---|
configurable | true | 表示這個(gè)屬性能否用delete刪除 |
enumerable | true | 表示這個(gè)屬性能否通過for in 循環(huán)遍歷 |
writable | true | 表示這個(gè)屬性能否被修改 |
value | undefined | 表示這個(gè)屬性的數(shù)據(jù)值 |
如果調(diào)用Object.defineProperty沒有指定configurable, enumerable, writable,那么他們的默認(rèn)值都是false。
訪問器屬性
訪問器屬性就是get, set讓你可以在讀取或者寫入值時(shí),做一層攔截。
var man = { _sex: 1 } Object.defineProperty(man, 'sex', { set: function (v) { this._sex = v === '男' ? 1 : 0 }, get: function () { return this._sex === 1 ? "男" : "女" } }) nam.sex // 男
想一想如果把上面的_sex改成sex會(huì)有什么問題?
// 這樣寫會(huì)有什么問題 var man = { sex: 1 } Object.defineProperty(man, 'sex', { set: function (v) { this.sex = v === '男' ? 1 : 0 }, get: function () { return this.sex === 1 ? "男" : "女" } })
看完了這篇文章,相信你對(duì)JavaScript數(shù)據(jù)類型是什么有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
分享文章:JavaScript數(shù)據(jù)類型是什么
URL分享:http://vcdvsql.cn/article24/pocdce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、服務(wù)器托管、網(wǎng)站內(nèi)鏈、網(wǎng)頁設(shè)計(jì)公司、App設(shè)計(jì)、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)