最近在復習JavaScript的基礎知識,和第一次學確實有了很不一樣的感受,第一次學的比較淺,但是回頭再進行學習的時候,發現有很多遺漏的東西,所以今天想分享一下新學到的知識,后面會一點一點補充更新
JavaScript的數據結構有8個,分別是number?string?boolean?object?undefined?null?還有es6新增的symbol和bigint,今天主要分享一下null?undefined?number,其他的等復習完會及時更新的
null:
null是一個獨立的數據類型,表示一個空值或者是一個對象沒有值
null有幾個特殊的用法,操作如下:
1.當使用Number方法來識別null的時候,輸出為0
console.log(Number(null)) //0
2.對null實現一些運算符操作(可以將null當做0來進行計算)
console.log(2 + null) //2console.log(2 * null) //0
undefined:
undefined比較特殊,表示未定義,比如你在生命一個變量,但是沒給他賦值的時候,然后檢測該變量的類型,輸出就是undefined
let aconsole.log(a) //undefined
?1.當使用Number方法來識別undefined的時候,輸出為NaN
console.log(Number(undefined)) //NaN
2.對undefined實現一些運算符操作(可以將undefined當做沒有值來進行計算)
console.log(undefined + 2) //NaNconsole.log(undefined * 2) //NaN
?3.當使用undefined和null來進行比較的時候,非嚴格模式下,兩者是相等的
console.log(null == undefined) //true
console.log(null === undefined) //false
number:
number是用來表示整數和浮點數已經NaN的數據類型,JavaScript的底層沒有整數
1.所有的數字都是使用64位浮點數來進行存儲
console.log(1 === 1.0) //true
2.當小數在進行相加的時候,具有誤差
console.log((0.3 - 0.2) === 0.1) //false
3.當一個計算的數大于2的53次方,計算就不準確了
console.log(Math.pow(2, 53) === Math.pow(2, 53) + 1) //true
4.當一個數大于2的1024次方,就會溢出,如果小于2的-1075次方,會溢出為0
console.log(Math.pow(2, 1024)) //Infinity
console.log(Math.pow(2, -1075) ) //0
5.+0和-0
在很多情況下+0和-0是一樣的,但是只有當他們表示分母的時候,會有不一樣的結果
console.log(+0 === -0) //true
console.log(1 / +0 === 1 / -0) //false
6.NaN表示number類型,當對NaN進行冪運算的時候,輸出為1,其他情況下都為NaN
console.log(NaN ** 0) //1
7.進制
十進制表示沒有前導0的數值,二進制前綴(0b/0B),八進制前綴(0o/0O),十六進制前綴(0x/0X),
特殊情況:
?有前導0的數值會被視為八進制,但是如果前導0后面有數字8和9,則該數值被視為十進制。
console.log(099) //99
console.log(088) //88
console.log(077) //63
?8.infinity運算
1. 范圍:Infinity大于一切數值(除了NaN),-Infinity小于一切數值(除了NaN)。
console.log(Infinity > -100) //true
console.log(-Infinity < -100) //false
console.log(Infinity > NaN) //false
console.log(-Infinity < NaN) //false
2.?Infinity與undefined計算,返回的都是NaN。
console.log(Infinity + undefined) //NaN
console.log(Infinity - undefined) //NaN
console.log(Infinity * undefined) //NaN
console.log(Infinity / undefined) //NaN
3. Infinity減去或除以Infinity,得到NaN。
console.log(Infinity - Infinity) //NaN
console.log(Infinity / Infinity) //NaN
4.0乘以Infinity,返回NaN;0除以Infinity,返回0;Infinity除以0,返回Infinity。
console.log(0 * Infinity) //NaN
console.log(0 / Infinity) //0
console.log(Infinity / 0) //Infinity
5.Infinity與null計算時,null會轉成0,等同于與0的計算。只用相乘的時候,返回NaN
console.log(Infinity + null) //Infinity
console.log(Infinity - null) //Infinity
console.log(Infinity * null) //NaN
console.log(Infinity / null) //Infinity
更新中......