JavaScript開發的技巧

來源:互聯網
上載者:User

標籤:

1、 使用===取代==
    ==和!=操作符會在需要的情況下自動轉換資料類型。但===和!==不會,它們會同時比較值和資料類型,這也使得它們要比==和!=快。

 1         if("1"=="1"){  //速度慢 2  3         } 4         if ("1" === "1") {  //速度快 5  6         } 7         if ("1" != "1") {//速度慢 8  9         }10         if ("1" !== "1") {//速度快11 12         }

2、underfined、null、0、false、NaN、Null 字元串 的邏輯結果均為 false

3、從數組中隨機擷取成員

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

4、擷取指定範圍內的隨機數

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

5、函數在建立之後直接自動執行,通常稱之為自調用匿名函數(Self-Invoked Anonymous Function)或直接調用函數運算式(Immediately Invoked Function Expression )。格式如下:

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

6、數組之間追加

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

7、擷取數組中的最大值和最小值

        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);  //最小值

8、清空數組

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

9、不要直接從數組中delete或remove元素,  如果對數組元素直接使用delete,其實並沒有刪除,只是將元素置為了undefined。數組元素刪除應使用splice。 刪除對象的屬性時可以使用delete。

arrayObject.splice(index,howmany,item1,.....,itemX)
參數 描述
index 必需。整數,規定添加/刪除項目的位置,使用負數可從數組結尾處規定位置。
howmany 必需。要刪除的項目數量。如果設定為 0,則不會刪除項目。
item1, ..., itemX 可選。向數組添加的新項目。
說明

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

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

10、保留指定小數位元

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

11、 浮點計算的問題
 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 異常。

 

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

1     //不要使用:2       setInterval("Fun_1()",200);3        setInterval("Fun_2()",200);4        //使用:5        setInterval(Fun_1,200);6        setInterval(Fun_2,200);

 

JavaScript開發的技巧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.