成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

最熟悉的陌生人:JavaScript數(shù)據(jù)類型

raledong / 3163人閱讀

摘要:使用格式表示整數(shù)和浮點(diǎn)數(shù),一般來(lái)說(shuō)整數(shù)占用了位,而浮點(diǎn)數(shù)數(shù)占用位。要比較浮點(diǎn)數(shù)是否相等,可以采用是一個(gè)非常小的數(shù)值,如果兩個(gè)浮點(diǎn)數(shù)相減小于,則可以為認(rèn)為是相等。

最近面試了三個(gè)開(kāi)發(fā),他們都沒(méi)有說(shuō)清楚JS的基本類型有哪些。而且往往錯(cuò)誤的說(shuō)了一些C語(yǔ)言的數(shù)據(jù)類型,例如int, float, double之類的數(shù)據(jù)類型。

無(wú)論什么語(yǔ)言,熟練掌握數(shù)據(jù)類型都是這門語(yǔ)言最根本的知識(shí)點(diǎn)

JS數(shù)據(jù)類型分為兩類,一類是基本類型,他們有

Number

String

Boolean

Undefined

Null

Symbol

js的基本類型就這么幾個(gè),除此之外,其他的類型都是對(duì)象。

Number類型

在JS沒(méi)有整型,float,或者double類型的數(shù)值,所有數(shù)值統(tǒng)一叫做Number類型。

JS使用IEEE754格式表示整數(shù)和浮點(diǎn)數(shù),一般來(lái)說(shuō)整數(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的問(wèn)題,所有語(yǔ)言中都有這個(gè)問(wèn)題。

計(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è)比較特殊的兄弟

Infinity 當(dāng)數(shù)值超過(guò)Number類型的最大值,他就會(huì)變成正無(wú)窮

-Infinity 當(dāng)數(shù)值類型小于Number類型的最小值,就會(huì)變成負(fù)無(wú)窮

NaN NaN的意思是它不是一個(gè)數(shù)值,例如某個(gè)字符串除以0,一般語(yǔ)言都會(huì)報(bào)錯(cuò),但是js不會(huì),而是該變量的值會(huì)變成NaN。

// Infinity與NaN的區(qū)別
"90"/4 // 22.5
"90n"/4 // NaN
"90"/0 // Infinity
"90n"/0 // NaN
"90N"/"a" // NaN

數(shù)值類型一旦變成這三個(gè)兄弟,就無(wú)法參與后續(xù)的數(shù)值運(yùn)算。

數(shù)值計(jì)算

數(shù)值計(jì)算操作符有很多,常見(jiàn)的有加減乘除,自增,自減。

變量在參與數(shù)值計(jì)算時(shí),變量值會(huì)被轉(zhuǎn)換成基本包裝類型Number參與表達(dá)式求值。如果某個(gè)變量值轉(zhuǎn)換的結(jié)果是NaN, 那么整個(gè)表達(dá)式的結(jié)果就為NaN

Number("90n") // NaN
Number("90") // 90
"90"/4 // 22.5
"90n"/4 // NaN
"90"/0 // Infinity
"90n"/0 // NaN
"90N"/"a" // NaN
NaN + Infinity // NaN
String類型

從靜態(tài)語(yǔ)言過(guò)來(lái)的同學(xué),遇到字符串就會(huì)問(wèn)個(gè)問(wèn)題:請(qǐng)問(wèn)你能裝多少個(gè)字符串呢?

字符串傻傻一笑,說(shuō):自從我誕生以來(lái),從來(lái)就沒(méi)被裝滿過(guò)!

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值很簡(jiǎn)單,就false和true兩個(gè)值。但是很多人不能完全回答出,哪些值會(huì)被轉(zhuǎn)換成false。

除了下面幾個(gè)能夠被轉(zhuǎn)成false的值,其他都是true。

false
""
NaN
undefined
0, -0, +0
null
undefined 和 null

undefined表示一個(gè)變量被定義了,但是沒(méi)有被賦值。null表示這個(gè)變量根本沒(méi)被定義??傊?,無(wú)論是undefined和null,他們基本上都是不能使用的值。

null類型有個(gè)特別的作用。比如有個(gè)對(duì)象,有很多屬性,這時(shí)候你想把這個(gè)變量給標(biāo)記為可以被垃圾回收了,那么就可以把它的值設(shè)置為null。

最熟悉的陌生人: 對(duì)象
我曾認(rèn)為對(duì)象在js中是最簡(jiǎn)單的,而實(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)值 說(shuō)明
configurable true 表示這個(gè)屬性能否用delete刪除
enumerable true 表示這個(gè)屬性能否通過(guò)for in 循環(huán)遍歷
writable true 表示這個(gè)屬性能否被修改
value undefined 表示這個(gè)屬性的數(shù)據(jù)值

如果調(diào)用Object.defineProperty沒(méi)有指定configurable, enumerable, writable,那么他們的默認(rèn)值都是false。

訪問(wèn)器屬性

訪問(wèn)器屬性就是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ì)有什么問(wèn)題?

// 這樣寫會(huì)有什么問(wèn)題
var man = {
    sex: 1
}
Object.defineProperty(man, "sex", {
 set: function (v) {
     this.sex = v === "男" ? 1 : 0
 },
 get: function () {
     return this.sex === 1 ? "男" : "女"
 }
})
最后

很多人抱怨說(shuō),工作不好找,其實(shí)大多數(shù)時(shí)候都是自己準(zhǔn)備不足。

隨便網(wǎng)上刷刷幾道題,看看幾集視頻教程,往往不太同意蒙混過(guò)關(guān)。

雖說(shuō)前端可能比較簡(jiǎn)單,但是也絕沒(méi)有想象的那么簡(jiǎn)單。

掃碼訂閱我的微信公眾號(hào):洞香春天。每天一篇技術(shù)短文,讓知識(shí)不再高冷。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/102863.html

相關(guān)文章

  • 談?wù)勎?em>熟悉又陌生cookie

    摘要:前言大概是我的業(yè)務(wù)領(lǐng)域比較狹窄的原因我總是會(huì)聽(tīng)說(shuō)卻很少在實(shí)際的開(kāi)發(fā)中應(yīng)用或者實(shí)踐過(guò)它今天剛好看到高級(jí)程序設(shè)計(jì)第三版的數(shù)據(jù)存儲(chǔ)部分說(shuō)到了這里就對(duì)做一個(gè)深入訪談希望和我一樣對(duì)似曾相識(shí)的朋友可以真正的熟悉并學(xué)會(huì)利用來(lái)服務(wù)我們的業(yè)務(wù)定義是服務(wù)器為了 前言 大概是我的業(yè)務(wù)領(lǐng)域比較狹窄的原因,我總是會(huì)聽(tīng)說(shuō)cookie,卻很少在實(shí)際的開(kāi)發(fā)中應(yīng)用或者實(shí)踐過(guò)它,今天剛好看到的數(shù)據(jù)存儲(chǔ)部分,說(shuō)到了cook...

    fizz 評(píng)論0 收藏0
  • 記一次兩小時(shí)js編程學(xué)習(xí)

    摘要:布爾值和兩個(gè)值,與其他語(yǔ)言中似乎沒(méi)有任何區(qū)別以及特異所在。注意點(diǎn)中有類假的概念,即便不是也會(huì)被當(dāng)做處理,請(qǐng)注意下面幾個(gè)值布爾值未定義空字符串面向?qū)ο蠛苓z憾地說(shuō),設(shè)計(jì)的時(shí)候肯定沒(méi)有考慮。 JavaScript 特性 1.弱類型語(yǔ)言2.解釋型語(yǔ)言3.客戶端語(yǔ)言對(duì)于有學(xué)習(xí)Java、C以及Python一類的人來(lái)說(shuō),最熟悉的莫過(guò)于這些都是強(qiáng)類型語(yǔ)言。它們嚴(yán)格的遵守自身的規(guī)定,永遠(yuǎn)也不會(huì)有下面的情...

    Miracle_lihb 評(píng)論0 收藏0
  • CSS:BFC 熟悉生人

    摘要:就是神奇之一,它也是最熟悉的陌生人,因?yàn)槟阋徊恍⌒木蜁?huì)觸發(fā)它然而你并沒(méi)有意識(shí)到它正在神奇地發(fā)揮作用。最常見(jiàn)的有和,中還增加了和,這里就不深入研究了。其根本原理就是它們處于同一個(gè),符合屬于同一個(gè)的兩個(gè)相鄰元素的會(huì)發(fā)生重疊的規(guī)則。 BFC,你也許聽(tīng)過(guò)這個(gè)詞,但是你可能不是很有底氣地解釋清楚。寫樣式的時(shí)候,往往加了一個(gè)樣式或者改了一個(gè)屬性,就能達(dá)到你期望的效果,一切都是如此地神奇。BFC就是...

    focusj 評(píng)論0 收藏0
  • 2017-09-18 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選的現(xiàn)狀網(wǎng)頁(yè)性能提升指南精讀現(xiàn)代概覽從入門到真實(shí)項(xiàng)目配置瀏覽器的渲染過(guò)程與原理動(dòng)畫動(dòng)畫中文第期跨瀏覽器頁(yè)的通信解決方案嘗試前端面試題及答案總結(jié)掘金周刊教程最熟悉的陌生人個(gè)人文章技術(shù)周刊期知乎專欄的缺口和中的樣式從外 2017-09-18 前端日?qǐng)?bào) 精選 Web 的現(xiàn)狀:網(wǎng)頁(yè)性能提升指南精讀《現(xiàn)代 JavaScript 概覽》webpack:從入門到真實(shí)項(xiàng)目配置瀏覽器的渲染:過(guò)...

    zhangwang 評(píng)論0 收藏0
  • 用 Python 分析過(guò)往 36 年春晚節(jié)目數(shù)據(jù),發(fā)現(xiàn)一些趣事

    摘要:節(jié)目單表是每一年春晚上表演的節(jié)目,包括節(jié)目類型節(jié)目名演員名這幾項(xiàng)數(shù)據(jù)。好消息是,今年的春晚她會(huì)繼續(xù)主持。對(duì)她的印象莫過(guò)于每年春晚尾聲的那曲難忘今宵。年的春晚,她一人連唱首歌,前無(wú)古人,也后無(wú)來(lái)者。 showImg(https://segmentfault.com/img/remote/1460000018120380); 看過(guò)那么多春晚,哪一年、哪些節(jié)目、哪些人你還留有深刻印象呢。 記...

    hufeng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

raledong

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<