把其它數據類型轉換爲number類型
javascript
isNaN 、Number、parseInt、parseFloat在進行加減乘除數學運算的時候java
true->1 false->0 ''->0 '12'->12 '12px'->NaN/12 "candy"->NaN null->0 undefined-NaN {} /^$/ function(){}->NaN []->''->0 //=>引用數據類型轉換數字 //經過toString方法把數組轉換爲字符串,而後在調用Number把字符串轉換爲數字
JS中的數學運算
數組
+、-、*、/ 加減乘除除了加法有特殊性,其他的運算符都是數學運算,也就是遇到非數字類型,須要把其轉換爲number在進行運算瀏覽器
加法的特殊性:dom
在遇到字符串的時候,+不是數學運算,而是字符串拼接,只要不遇到字符串就是數學運算函數
1-"1"->0; 10*null->0; 10/undefined ->NaN 10*[10]->100 1+"1"->"11" null+"1"->"null1" //=>字符串拼接:是把其它的值轉換爲字符串而後在拼接 (toString) //=>其餘數據類型的toString是直接的把值用單(雙)引號包起來便可,只有對象的有特殊性,對象.toString()==="[Object Object]" 1+null+undefined+[]+"candy"+null+undefined+[]+10 /* 1+null->1 1+true->2 2+undefined->NaN NaN+[]->NaN+""->"NaN" "NaN"+"candy->"NaNcandy" ... NaNCandynullundefined10 */
將其它數據類型轉換爲布爾類型
code
Boolean、!、!!在條件判斷的時候,也是轉換爲布爾類型,而後驗證條件的真假對象
只有
0、NaN、空字符串、null、undefined
五個轉換爲false,其他的都轉換爲trueip
[]->true -1->true if(box){ //=>首先把box變量存儲的值獲取到,轉換爲布爾類型,若是爲true條件成立,反之不成立 } if(3+"3px"){ //=>條件成立 } if(3-"3px"){ //=>條件不成立:3-"3px"=NaN }
在使用==進行比較的時候
字符串
在使用==進行比較的時候,若是左右兩邊數據類型不相同,瀏覽器會默認轉換爲相同的類型,而後在比較(===不會這樣操做)
//=>對象和對象:比較的是空間地址,不是相同的空間,結果確定是false []==[]->false var a={}; var b=a; a==b;=>true; //=>對象和數字:把對象轉換爲數字 []==0->true ({})==NaN->false //NaN和本身不相等和其它任何值都不相等 //=>對象和字符串:把兩邊都轉換爲數字比較的 []==""->true //=>對象和布爾:把兩邊都轉換數字 []==true//->0==1->false []==false//->0==0->true ![]==false//->![]把數組變爲布爾在取反=false->false==false->true //=>字符串和數字:字符串轉換爲數字 //=>字符串和布爾:都轉爲數字 //=>布爾和數字:布爾轉換爲數字 //=>規律:兩個等號比較,左右兩邊數據值的類型不同,瀏覽器會把兩邊的類型都轉換爲數字而後再比較,可是null和undefined除外 null==undefined->true nul===undefined->false null==0 ->false //null以及undefined和其它任何值都不相等
數學函數:可是它是對象數據類型的
typeof Math->"object"
Math對象中給咱們提供了不少經常使用操做數字的方法
console.dir(Math)
查看全部方法
abs
Math.abs:取絕對值
Math.abs(12)->12 Math.abs(-12)->12
ceil/floor
Math.ceil:向上取整
Math.floor:向下去整
Math.ceil(12)->12 Math.ceil(12.1)->13 Math.ceil(12.9)->13 Math.ceil(-12.9)->-12 Math.ceil(-12.1)->-12 Math.floor(12)->12 Math.floor(12.1)->12 Math.floor(12.9)->12 Math.floor(-12.9)->-13 Math.floor(-12.1)->-13
round
Math.round:四捨五入
Math.round(12.3)->12 Math.round(12.5)->13 正數中5包含在向上 Math.round(-12.3)->-12 Math.round(-12.5)->-12 負數中5包含在向下 Math.round(-12.51)->-13
random
Math.random:獲取(0,1)之間的隨機小數
for(var i=0;i<100;i++){ console.log(Math.random()); } //=>需求:獲取[0,10]之間的隨機整數 Math.round(Math.random()*10) //=>需求:獲取[1,10]之間的隨機整數 Math.ceil(Math.random()*10)) //=>需求:獲取[3,15]之間的隨機數 Math.round(Math.random()*12+3)
獲取[n,m]之間的隨機整數Math.round(Math.random()*(m-n)+n)
max/min
Math.max(12,23,25);->25 Math.min(12,23,25);->12
PI
Math.PI->3.141592653589793
pow/sqrt
Math.pow:獲取一個值的多少次冪Math.sqrt:開平方
Math.pow(10,2)->100 Math.sqrt(100)->10