從項目中總結的js知識點

來源:互聯網
上載者:User

標籤:logs   undefined   style   function   cti   事件   pre   com   man   

1. 數字字串和數字進行比較可以得出正確結果,卻不能正確判斷是否在一個數字數組中。如以下程式:

var s = ‘8‘, n = 8, arr = [1,2,8,9];console.log(s==n ? ‘yes‘ : ‘no‘);console.log($.inArray(s, arr)!=-1 ? ‘yes‘ : ‘no‘);console.log(arr.indexOf(s)!=-1 ? ‘yes‘ : ‘no‘);

列印出來結果分別是:yes、no、no。

在JavaScript中經常會遇到數字字串,為了防止這種情況的出現,若是用於數字數組判斷,應該使用parseInt()函數將其轉化為int類型。

 

2. 使用$.each()函數來遍曆數組的時候,預設下標從0開始連續訪問至數組的最大下標,中間不存在的下標值為”undefined”,且字串下標元素不會被訪問到。如以下程式:

var arr = [];arr[1] = 1;arr[4] = 4;arr[‘aa‘] = ‘aa‘;console.log(arr);$.each(arr, function(i, o) {        console.log(i, o);});

列印結果為(數組長度也不正確):

 

3. 在使用了非同步請求的程式中,訪問某個資料對象出現”undefined”,一般是非同步請求還沒完成,應該在確保非同步請求已完成的地方訪問請求得到的資料。

 

4. 給html元素繫結的click事件是非同步,點擊之後才會觸發。如果使用迴圈給多個元素繫結click事件,而click事件的方法中使用的參數值又隨著迴圈體的迭代而改變,那麼無論點擊哪個元素,觸發的都將是最後一個元素的click事件。這種情況下,可以在需要綁定click事件的元素中自訂一些屬性,把參數的值寫死在裡面,然後在click事件的方法中讀取當前元素的自訂屬性值作為參數值,這樣就可以避免以上問題的出現了。

 

5. 儘可能減少操作dom的次數。若需要使用字串拼接產生html元素,可以把所有需要產生的元素都拼接到字串中,然後一次性寫入dom。

 

6. 能在迴圈外做的動作就不要放在迴圈內部了,事件註冊一般都不需要在迴圈內部。

 

7. 捲軸滾動不需要計算頁面內容和捲軸之間滾動距離的比例,直接使用頁面內容的滾動距離即可。

 

8. 一般不要在頁面元素定義太多的id,容易衝突,可以使用元素之間的遍曆關係來定位需要操作的元素。

 

9. 使用indexOf()函數來判斷一個數組是否包含某個元素其實也是一個迴圈判斷。

從項目中總結的js知識點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.