1. 程式人生 > >對js的一些總結

對js的一些總結

dom 浮點數 一個 兩位小數 modify 類型變量 中文 拼接 mat

---------最近工作老是在做前端頁面,不可避免的使用了js。下面針對工作中使用到的js進行整理總結。

類型


總所周知,js是個弱類型語言,可以使用var聲明一切類型變量;js和其他的語言具有的數據類型差不多,除了Number數值類型需要註意。在對變量進行具體的賦值後;變量會與值的類型同步;而通過DOM操作獲取的值類型往往是字符串類型,所以類型轉換一般為字符串轉其他。記錄一下js常用的類型轉化方法。

string 轉換為其他類型

方法:parseInt() 、parseFloat() 、Number() 其他類似;這些都是強制轉換的方法 ;查看變量類型使用typeof();都是原生級的方法,直接用!

坑:NaN ----非數值類型,表明不是數字;往往在類型轉化後或者數值運算後出現的結果。出現NaN說明類型轉換有問題或者運算的類型不對稱,這時候檢查轉換的值是否出現了不該出現的東西,比如中文、特殊字符、非數字等。

類型轉換完當然要計算的啦,加、減、乘、除、來一套,順便帶上浮點運算。

加法:坑:小心變成字符串拼接 出現1+1 =11的情況,還是類型轉換問題,除了轉換好類型,也可以這樣操作 a*1+b*1;或者使用eval();

減法:暫時沒有被坑~~~;

乘法:同上;

除法:同上;

浮點運算:js的浮點運算,讓以上四大法全有了坑;坑:運算結果出現5.8999999999這種情況;

解決方法:使用以下代碼 轉載至:http://www.cnblogs.com/jiahaipeng/archive/2008/10/29/1321821.html

 1 //除法函數,用來得到精確的除法結果
 2 //說明:javascript的除法結果會有誤差,在兩個浮點數相除的時候會比較明顯。這個函數返回較為精確的除法結果。
 3 //調用:accDiv(arg1,arg2)
 4 //返回值:arg1除以arg2的精確結果
 5 function accDiv(arg1,arg2){
 6     var t1=0,t2=0,r1,r2;
 7     try{t1=arg1.toString().split(".")[1].length}catch(e){}
 8     try{t2=arg2.toString().split(".")[1].length}catch
(e){} 9 with(Math){ 10 r1=Number(arg1.toString().replace(".","")); 11 r2=Number(arg2.toString().replace(".","")); 12 return (r1/r2)*pow(10,t2-t1); 13 } 14 } 15 //給Number類型增加一個div方法,調用起來更加方便。 16 Number.prototype.div = function (arg){ 17 return accDiv(this, arg); 18 }; 19 //乘法函數,用來得到精確的乘法結果 20 //說明:javascript的乘法結果會有誤差,在兩個浮點數相乘的時候會比較明顯。這個函數返回較為精確的乘法結果。 21 //調用:accMul(arg1,arg2) 22 //返回值:arg1乘以arg2的精確結果 23 function accMul(arg1,arg2) 24 { 25 var m=0,s1=arg1.toString(),s2=arg2.toString(); 26 try{m+=s1.split(".")[1].length}catch(e){} 27 try{m+=s2.split(".")[1].length}catch(e){} 28 return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m); 29 } 30 //給Number類型增加一個mul方法,調用起來更加方便。 31 Number.prototype.mul = function (arg){ 32 return accMul(arg, this); 33 }; 34 //加法函數,用來得到精確的加法結果 35 //說明:javascript的加法結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函數返回較為精確的加法結果。 36 //調用:accAdd(arg1,arg2) 37 //返回值:arg1加上arg2的精確結果 38 function accAdd(arg1,arg2){ 39 var r1,r2,m; 40 try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} 41 try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} 42 m=Math.pow(10,Math.max(r1,r2)); 43 return (arg1*m+arg2*m)/m; 44 } 45 //給Number類型增加一個add方法,調用起來更加方便。 46 Number.prototype.add = function (arg){ 47 return accAdd(arg,this); 48 } 49 //減法函數 50 function accSub(arg1,arg2){ 51 var r1,r2,m,n; 52 try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} 53 try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} 54 m=Math.pow(10,Math.max(r1,r2)); 55 //last modify by deeka 56 //動態控制精度長度 57 n=(r1>=r2)?r1:r2; 58 return ((arg2*m-arg1*m)/m).toFixed(n); 59 } 60 ///給number類增加一個sub方法,調用起來更加方便 61 Number.prototype.sub = function (arg){ 62 return accSub(arg,this); 63 }

調用:數字.mul(數字);也可以自己進行浮點的”精度”進行設置,使用toFixed(2);保留兩位小數(四舍五入),然後再參與運算!

DOM操作


js技術的重中之重,分別寫一下原生javascript和jquery操作dom的方法

JS測試調試

alert() 、console.log() 最後+Chrome F12 其他不寫了 (懶

未完待續!

對js的一些總結