js 技巧1

一、 使用===取代==
    ==和!=操做符會在須要的狀況下自動轉換數據類型。但===和!==不會,它們會同時比較值和數據類型,這也使得它們要比==和!=快。數組

if("1"=="1"){ //速度慢

}
if ("1" === "1") { //速度快

}

 

二、underfined、null、0、false、NaN、空字符串 的邏輯結果均爲 falseapp

三、從數組中隨機獲取成員dom

var array=[12,55,'a',5,8,9,4,94,'fv'];
var randomItem=array[Math.floor(Math.random() * array.length)];

四、獲取指定範圍內的隨機數函數

var x=Math.floor(Math.random() * (max -min +1))+min;

五、函數在建立以後直接自動執行,一般稱之爲自調用匿名函數(Self-Invoked Anonymous Function)或直接調用函數表達式(Immediately Invoked Function Expression )。格式以下:編碼

(function (){
//自動執行代碼
})();

(function (a,b){
//自動執行代碼
})(4,9);

六、數組之間追加spa

var arrary1=[45,958,68,98,669,85,34];
var arrary2=[7,54,8,54,57,9,77];
Array.prototype.push.apply(arrary1,arrary2); //arrary1 的值爲:[45,958,68,98,669,85,34,7,54,8,54,57,9,77]

七、獲取數組中的最大值和最小值prototype

var numbers=[46,4,68,89,87,84,49,16,89,9];
var maxNumber=Math.max.apply(Math,numbers); //最大值
var minNumber=Math.min.apply(Math,numbers); //最小值

八、清空數組code

var array=[15,9,68,76];
array.length=0;

九、不要直接從數組中delete或remove元素,  若是對數組元素直接使用delete,其實並無刪除,只是將元素置爲了undefined。數組元素刪除應使用splice。 刪除對象的屬性時能夠使用delete。對象

arrayObject.splice(index,howmany,item1,.....,itemX)blog

參數 描述

index 必需。整數,規定添加/刪除項目的位置,使用負數可從數組結尾處規定位置。

howmany 必需。要刪除的項目數量。若是設置爲 0,則不會刪除項目。

item1, ..., itemX 可選。向數組添加的新項目。

說明

splice() 方法可刪除從 index 處開始的零個或多個元素,而且用參數列表中聲明的一個或多個值來替換那些被刪除的元素。

若是從 arrayObject 中刪除了元素,則返回的是含有被刪除的元素的數組。

十、保留指定小數位數

var num=2.9932858;
num=num.toFixed(4); //num=2.9932

十一、 浮點計算的問題

 0.1+0.2等於0.30000000000000004。JavaScript的數字都遵循IEEE 754標準構建,在內部都是64位浮點小數表示,具體能夠參見JavaScript中的數字是如何編碼的。
能夠經過使用toFixed()和toPrecision()來解決這個問題。

toFixed() 方法可把 Number 四捨五入爲指定小數位數的數字。

NumberObject.toFixed(num)

參數 描述

num 必需。規定小數的位數,是 0 ~ 20 之間的值,包括 0 和 20,有些實現能夠支持更大的數值範圍。若是省略了該參數,將用 0 代替。

返回值

返回 NumberObject 的字符串表示,不採用指數計數法,小數點後有固定的 num 位數字。若是必要,該數字會被舍入,也能夠用 0 補足,以便它達到指定的長度。若是 num 大於 le+21,則該方法只調用 NumberObject.toString(),返回採用指數計數法表示的字符串。

拋出

當 num 過小或太大時拋出異常 RangeError。0 ~ 20 之間的值不會引起該異常。有些實現支持更大範圍或更小範圍內的值。

當調用該方法的對象不是 Number 時拋出 TypeError 異常。

 

toPrecision() 方法可在對象的值超出指定位數時將其轉換爲指數計數法。

NumberObject.toPrecision(num)

參數 描述

num 必需。規定必須被轉換爲指數計數法的最小位數。該參數是 1 ~ 21 之間(且包括 1 和 21)的值。有效實現容許有選擇地支持更大或更小的 num。若是省略了該參數,則調用方法 toString(),而不是把數字轉換成十進制的值。

返回值

返回 NumberObject 的字符串表示,包含 num 個有效數字。若是 num 足夠大,可以包括 NumberObject 整數部分的全部數字,那麼返回的字符串將採用定點計數法。不然,採用指數計數法,即小數點前有一位數字,小數點後有 num-1 位數字。必要時,該數字會被舍入或用 0 補足。

拋出

當 num 過小或太大時拋出異常 RangeError。1 ~ 21 之間的值不會引起該異常。有些實現支持更大範圍或更小範圍內的值。

當調用該方法的對象不是 Number 時拋出 TypeError 異常,這個不多用,通常沒人知道 。

十二、傳給setInterval()和setTimeout()時使用函數而不是字符串

//不要使用:
setInterval("Fun_1()",200);
setInterval("Fun_2()",200);
//使用:
setInterval(Fun_1,200);
setInterval(Fun_2,200);
相關文章
相關標籤/搜索