摘要:如何讓根據(jù)拆箱轉(zhuǎn)換,以及的隱式轉(zhuǎn)換,可以如下寫為什么計算機中所有的數(shù)據(jù)都是以二進制存儲的,所以在計算機計算時要把數(shù)據(jù)先轉(zhuǎn)換成二進制進行計算,然后把計算結(jié)果轉(zhuǎn)換成十進制。會存在精度丟失問題和的二進制都是以無線循環(huán)的小數(shù)的二進制的二進制
本想著記筆記里,但是筆記里沒有分類,還是以文章的形式,當(dāng)個人總結(jié)吧,這一篇就當(dāng)作JS基礎(chǔ)篇的記錄吧,有修改的和新增的持續(xù)更新~
關(guān)于JS的一些小技巧toString():返回一個反映這個對象的字符串
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:強制類型轉(zhuǎn)換: Boolean(val)/Number(val)/String(val)
3: 利用js變量弱類型轉(zhuǎn)換:*1 (實際上調(diào)用了.valueOf方法),然后使用Number.isNaN來判斷是否為NaN,或者使用a!==a來判斷是否為NaN,因為NaN!==NaN
"32"*1 //32 "ds"*1 //NaN
也可以使用+來轉(zhuǎn)化為數(shù)字,一元正號位于操作數(shù)前面,計算操作數(shù)的數(shù)值,如果操作數(shù)不是一個數(shù)值,會嘗試將其轉(zhuǎn)壞為一個數(shù)值,參考見 https://developer.mozilla.org...
+"123" //123 ""ds" //NaN +null //0 +undefined //NaN +{valueOf: () => "3"} //3
除了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 ]
雙否定位操作符的優(yōu)勢在于它執(zhí)行相同的操作運行速度更快
Math.floor(4.9) === 4簡寫為 ~~4.9 === 4
注意:對于負(fù)數(shù)來說結(jié)果不同
ps: 還可以用 4.9 | 0 === 4
num & 1 //奇數(shù)返回,偶數(shù)返回0
const round = (n, decimals = 0) => Number(`${Math.round(`${n}e${decimals}`)}e-${decimals}`) round(1.245, 2) //1.25
obj.c == null 等價于obj.c === undefined/null
如果值為真,首先可以排除undefined和null,根據(jù)對象類型,可以做出如下判斷
數(shù)值類型:表示不是0,并且有確定含義的值(包括無窮大)
數(shù)組,對象,函數(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á)式,不需要使用!!進行轉(zhuǎn)換,JS會自動轉(zhuǎn)換,!!就只將類型轉(zhuǎn)換為Boolean值
if (!!value) {} // 等價與下面 if (value) {}原始類型和引用類型比較
123 == "123" //true "" == 0 //true
null == undefined //true null == "" //false null == 0 //fasle null == false //false undefined == "" //false undefined == 0 //false undefined == false //false
"[object Object] == {}" //true "1,2,3" == [1, 2, 3] //true [] == ![] //true
關(guān)于第三個:!的優(yōu)先級高于==,![]首先會被轉(zhuǎn)換成false,然后根據(jù)上面第三點,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(); }, }
會存在精度丟失問題
0.1和0.2的二進制都是以1100無線循環(huán)的小數(shù)
0.1的二進制:
0.0001100110011001100110011001100110011001100110011001101
0.的二進制:
0.001100110011001100110011001100110011001100110011001101
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/104815.html
摘要:因為工作中一直在使用,也一直以來想總結(jié)一下自己關(guān)于的一些知識經(jīng)驗。于是把一些想法慢慢整理書寫下來,做成一本開源免費專業(yè)簡單的入門級別的小書,提供給社區(qū)。本書的后續(xù)可能會做成視頻版本,敬請期待。本作品采用署名禁止演繹國際許可協(xié)議進行許可 React.js 小書 本文作者:胡子大哈本文原文:React.js 小書 轉(zhuǎn)載請注明出處,保留原文鏈接以及作者信息 在線閱讀:http://huzi...
閱讀 1592·2023-04-25 19:51
閱讀 1992·2019-08-30 15:55
閱讀 1859·2019-08-30 15:44
閱讀 2748·2019-08-30 13:58
閱讀 2753·2019-08-29 16:37
閱讀 1131·2019-08-29 15:34
閱讀 4108·2019-08-29 11:05
閱讀 2714·2019-08-28 17:51