国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【JS】關(guān)于JS的一些知識(shí)點(diǎn)(JS基礎(chǔ),純記錄)

SwordFly / 1412人閱讀

摘要:如何讓根據(jù)拆箱轉(zhuǎn)換,以及的隱式轉(zhuǎn)換,可以如下寫為什么計(jì)算機(jī)中所有的數(shù)據(jù)都是以二進(jìn)制存儲(chǔ)的,所以在計(jì)算機(jī)計(jì)算時(shí)要把數(shù)據(jù)先轉(zhuǎn)換成二進(jìn)制進(jìn)行計(jì)算,然后把計(jì)算結(jié)果轉(zhuǎn)換成十進(jìn)制。會(huì)存在精度丟失問題和的二進(jìn)制都是以無線循環(huán)的小數(shù)的二進(jìn)制的二進(jìn)制

本想著記筆記里,但是筆記里沒有分類,還是以文章的形式,當(dāng)個(gè)人總結(jié)吧,這一篇就當(dāng)作JS基礎(chǔ)篇的記錄吧,有修改的和新增的持續(xù)更新~

關(guān)于JS的一些小技巧
1:JS中toString和valueof()區(qū)別

toString():返回一個(gè)反映這個(gè)對(duì)象的字符串

valueOf():返回它相應(yīng)的原始值

console.log([1,2,3].toString()); // "1,2,3"
console.log(new Date(2015,4,4).toString()); // "Mon May 04 2015 00:00:00 GMT+0800
c"
console.log(new Date(2015,4,4).valueOf()); //  "1430668800000  "

注意: Math和Error沒有valueOf方法

字符串轉(zhuǎn)換為數(shù)字的三種方法js
1:pasreInt()parseFloat()方法:轉(zhuǎn)換不成功的返回NaN

2:強(qiáng)制類型轉(zhuǎn)換: Boolean(val)/Number(val)/String(val)

3: 利用js變量弱類型轉(zhuǎn)換:*1 (實(shí)際上調(diào)用了.valueOf方法),然后使用Number.isNaN來判斷是否為NaN,或者使用a!==a來判斷是否為NaN,因?yàn)?b>NaN!==NaN

"32"*1  //32
"ds"*1  //NaN

也可以使用+來轉(zhuǎn)化為數(shù)字,一元正號(hào)位于操作數(shù)前面,計(jì)算操作數(shù)的數(shù)值,如果操作數(shù)不是一個(gè)數(shù)值,會(huì)嘗試將其轉(zhuǎn)壞為一個(gè)數(shù)值,參考見 https://developer.mozilla.org...

+"123" //123
""ds"  //NaN
+null  //0
+undefined //NaN
+{valueOf: () => "3"}  //3
2:Boolean可以過濾掉數(shù)組的所有假值

除了false,null,undefined,0,"",NaN,都是假值

const compact = arr => arr.filter(Boolean)
compact([0, 1, false, 2, "", 3, "a", "e" * 23, NaN, "s", 34])             // [ 1, 2, 3, "a", "s", 34 ]
3:雙位運(yùn)算符

雙否定位操作符的優(yōu)勢(shì)在于它執(zhí)行相同的操作運(yùn)行速度更快

Math.floor(4.9) === 4簡(jiǎn)寫為 ~~4.9 === 4

注意:對(duì)于負(fù)數(shù)來說結(jié)果不同

ps: 還可以用 4.9 | 0 === 4

4:判斷奇偶數(shù)

num & 1 //奇數(shù)返回,偶數(shù)返回0

5:精確到指定位數(shù)的小數(shù)2
const round = (n, decimals = 0) => Number(`${Math.round(`${n}e${decimals}`)}e-${decimals}`)
round(1.245, 2) //1.25
6:程序中所有的等于判斷都要用===,除了obj.c == null這種情況

obj.c == null 等價(jià)于obj.c === undefined/null

7:變量前加兩個(gè)感嘆號(hào),判斷變量的值

如果值為真,首先可以排除undefined和null,根據(jù)對(duì)象類型,可以做出如下判斷

數(shù)值類型:表示不是0,并且有確定含義的值(包括無窮大)

數(shù)組,對(duì)象,函數(shù):只能表示不是undefined或null,并不能判斷是否有元素和內(nèi)容。

var a = undefined/null !!a === false
var b = 0   !!b === false
var c = ""  !!c === false
//  其他都為true

var d = []/{} !!d === true

作為條件表達(dá)式,不需要使用!!進(jìn)行轉(zhuǎn)換,JS會(huì)自動(dòng)轉(zhuǎn)換,!!就只將類型轉(zhuǎn)換為Boolean值

if (!!value) {}  // 等價(jià)與下面
if (value) {}
原始類型和引用類型比較
1:String和Number比較,會(huì)先將String轉(zhuǎn)換成Number類型
123 == "123"  //true
"" == 0  //true
2:null和undefined比較結(jié)果是true,除此之外,null、undefined和其他任何結(jié)果值的比較值都為false
null == undefined //true
null == "" //false
null == 0 //fasle
null == false //false
undefined == "" //false
undefined == 0 //false
undefined == false //false
3:當(dāng)原始類型和引用類型做比較時(shí),對(duì)象類型會(huì)依照Toprimitive規(guī)則轉(zhuǎn)換為原始類型
"[object Object] == {}" //true
"1,2,3" == [1, 2, 3] //true
[] == ![] //true

關(guān)于第三個(gè):!的優(yōu)先級(jí)高于==,![]首先會(huì)被轉(zhuǎn)換成false,然后根據(jù)上面第三點(diǎn),false轉(zhuǎn)換成Number類型0,左側(cè)[]轉(zhuǎn)化成為0,兩側(cè)比較相等。

4:如何讓:a==1 && a==2 && a==3
根據(jù)拆箱轉(zhuǎn)換,以及==的隱式轉(zhuǎn)換,可以如下寫:

const a = {
   value:[3,2,1],
   valueOf: () => {return this.value.pop(); },
} 
5:為什么0.1+0.2 !=0.3
計(jì)算機(jī)中所有的數(shù)據(jù)都是以二進(jìn)制存儲(chǔ)的,所以在計(jì)算機(jī)計(jì)算時(shí)要把數(shù)據(jù)先轉(zhuǎn)換成二進(jìn)制進(jìn)行計(jì)算,然后把計(jì)算結(jié)果轉(zhuǎn)換成十進(jìn)制。

會(huì)存在精度丟失問題

0.10.2的二進(jìn)制都是以1100無線循環(huán)的小數(shù)

0.1的二進(jìn)制:
0.0001100110011001100110011001100110011001100110011001101

0.的二進(jìn)制:
0.001100110011001100110011001100110011001100110011001101

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/104815.html

相關(guān)文章

  • 深入理解js

    摘要:詳解十大常用設(shè)計(jì)模式力薦深度好文深入理解大設(shè)計(jì)模式收集各種疑難雜癥的問題集錦關(guān)于,工作和學(xué)習(xí)過程中遇到過許多問題,也解答過許多別人的問題。介紹了的內(nèi)存管理。 延遲加載 (Lazyload) 三種實(shí)現(xiàn)方式 延遲加載也稱為惰性加載,即在長(zhǎng)網(wǎng)頁中延遲加載圖像。用戶滾動(dòng)到它們之前,視口外的圖像不會(huì)加載。本文詳細(xì)介紹了三種延遲加載的實(shí)現(xiàn)方式。 詳解 Javascript十大常用設(shè)計(jì)模式 力薦~ ...

    caikeal 評(píng)論0 收藏0
  • 前端識(shí)點(diǎn)整理

    摘要:難怪超過三分之一的開發(fā)人員工作需要一些知識(shí)。但是隨著行業(yè)的飽和,初中級(jí)前端就業(yè)形勢(shì)不容樂觀。整個(gè)系列的文章大概有篇左右,從我是如何成為一個(gè)前端工程師,到各種前端框架的知識(shí)。 為什么 call 比 apply 快? 這是一個(gè)非常有意思的問題。 作者會(huì)在參數(shù)為3個(gè)(包含3)以內(nèi)時(shí),優(yōu)先使用 call 方法進(jìn)行事件的處理。而當(dāng)參數(shù)過多(多余3個(gè))時(shí),才考慮使用 apply 方法。 這個(gè)的原因...

    Lowky 評(píng)論0 收藏0
  • 前端識(shí)點(diǎn)整理

    摘要:難怪超過三分之一的開發(fā)人員工作需要一些知識(shí)。但是隨著行業(yè)的飽和,初中級(jí)前端就業(yè)形勢(shì)不容樂觀。整個(gè)系列的文章大概有篇左右,從我是如何成為一個(gè)前端工程師,到各種前端框架的知識(shí)。 為什么 call 比 apply 快? 這是一個(gè)非常有意思的問題。 作者會(huì)在參數(shù)為3個(gè)(包含3)以內(nèi)時(shí),優(yōu)先使用 call 方法進(jìn)行事件的處理。而當(dāng)參數(shù)過多(多余3個(gè))時(shí),才考慮使用 apply 方法。 這個(gè)的原因...

    snowLu 評(píng)論0 收藏0
  • 寫一本關(guān)于 React.js 小書

    摘要:因?yàn)楣ぷ髦幸恢痹谑褂茫惨恢币詠硐肟偨Y(jié)一下自己關(guān)于的一些知識(shí)經(jīng)驗(yàn)。于是把一些想法慢慢整理書寫下來,做成一本開源免費(fèi)專業(yè)簡(jiǎn)單的入門級(jí)別的小書,提供給社區(qū)。本書的后續(xù)可能會(huì)做成視頻版本,敬請(qǐng)期待。本作品采用署名禁止演繹國(guó)際許可協(xié)議進(jìn)行許可 React.js 小書 本文作者:胡子大哈本文原文:React.js 小書 轉(zhuǎn)載請(qǐng)注明出處,保留原文鏈接以及作者信息 在線閱讀:http://huzi...

    Scorpion 評(píng)論0 收藏0
  • 前端基礎(chǔ)

    摘要:談起閉包,它可是兩個(gè)核心技術(shù)之一異步基于打造前端持續(xù)集成開發(fā)環(huán)境本文將以一個(gè)標(biāo)準(zhǔn)的項(xiàng)目為例,完全拋棄傳統(tǒng)的前端項(xiàng)目開發(fā)部署方式,基于容器技術(shù)打造一個(gè)精簡(jiǎn)的前端持續(xù)集成的開發(fā)環(huán)境。 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果讀完本文還不懂,可以揍我。 不論你是javascript新手還是老鳥,不論是面試求職,還是日...

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

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

0條評(píng)論

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