undefined和null的區(qū)別
-
undefined
是聲明后沒有賦值的結(jié)果泽台,表示沒有值 -
null
是有值,它的值就是null
-
null
表示一個空對象指針 -
undefined
存在的意義主要是為了做判斷树碱,判斷一個變量或者對象的屬性是否有值 - 不要聲明一個變量為
undefined
的记罚,但是可以聲明一個變量為null,如果一個要保存對象的變量還沒有保存對象,就可以給它賦值null
NaN
-
NaN
表示不是一個數(shù)字 -
0/0
會返回NaN
望迎,此后再參與計算的值都是NaN
-
isNaN()
這個函數(shù)并不是用來判斷一個值是不是NaN
,而是用來判斷一個值是否不是數(shù)值障癌,這個函數(shù)應(yīng)該叫isNoNumber()
,所有能用Number
轉(zhuǎn)化成數(shù)字的值,都會返回true
辩尊,不能轉(zhuǎn)化為數(shù)字的值涛浙,返回false
數(shù)值
- 浮點數(shù)計算會產(chǎn)生誤差,因為
js
基于IEEE754
數(shù)值的浮點計算摄欲,浮點數(shù)的最高精度是17位小數(shù)轿亮。 - 數(shù)值范圍,最小值:
Number.MIN_VALUE
,5e-324
胸墙,最大值:Number.MAX_VALUE
,1.7976931348623157e+308
我注。Infinity
表示無窮大,當(dāng)一個運算的結(jié)果超出最大值時得到的結(jié)果就是Infinity
,小于最小值時得到的結(jié)果就是-Infinity
- 可以用
isFinite()
這個函數(shù)來判斷一個值是否位于最大最小之間
數(shù)值轉(zhuǎn)換
轉(zhuǎn)化數(shù)字的方法有Number()
, parseInt()
,parseFloat()
-
Number()
中只要有字母迟隅,就會轉(zhuǎn)化成NaN
,不識別二進(jìn)制,八進(jìn)制但骨,可以識別16進(jìn)制。 -
parseInt()
會忽略字符串之前的空格智袭,如果第一個字符不是數(shù)字或者負(fù)號就會返回NaN
,直到解析到第一個不是數(shù)字的字符,Number
對于空字符串會返回0吼野,parseInt()
會返回NaN
校哎。并且parseInt()
可以識別各種進(jìn)制(ES5
以后,不能解析8進(jìn)制),parseInt()
支持第二個參數(shù)瞳步,進(jìn)制贬蛙。 -
parseFloat()
也是會忽略字符串之前的空格,如果第一個字符不是數(shù)字或者負(fù)號就會返回NaN
谚攒,直到解析到第一個不是無效的浮點數(shù)字字符,不支持進(jìn)制氛堕,沒有第二個參數(shù)馏臭。
String類型
- 字符串是不可變的,字符串一旦創(chuàng)建讼稚,它們的值就不能改變
- 要把一個值轉(zhuǎn)變?yōu)樽址袃煞N方法括儒,使用幾乎每個值都有的
toString()
方法,toString()
可以輸出任意有效進(jìn)制格式的值锐想,null
和undefined
沒有這個方法帮寻,要想轉(zhuǎn)化null``和undefined
,可以使用轉(zhuǎn)型函數(shù)String()
赠摇。還有一種方式就是直接加“”
字符串固逗。
操作符
- 遞增與遞減操作符浅蚪,可以放在變量的前置也可以放在后置,它們最重要的區(qū)別就是:前置的時候變量的值都是在語句被求值前改變的烫罩。
- 位操作符惜傲,求一個負(fù)數(shù)的二進(jìn)制碼,負(fù)數(shù)的二進(jìn)制碼的格式是二進(jìn)制補碼贝攒,要計算一個數(shù)值的二進(jìn)制補碼盗誊,需要以下步驟
- 求這個數(shù)值的絕對值的二進(jìn)制碼
- 求二進(jìn)制反碼
- 得到的二進(jìn)制反碼加1.
函數(shù)
- 未指定函數(shù)返回值的時候,函數(shù)會返回
undefined
隘弊。