標簽:
1、js中use strict的作用域范圍只在當前腳本有效:比如1.js里面調用2.js的方法,1.js里面聲明"use strict",而2.js里面沒有聲明,則該調用為正常模式調用,并非嚴格模式; 2、location.replace與location.href的區別在于不會破壞之前的頁面回退功能; 3、由于瀏覽器對于跨域的限制,js不能本地保存跨域的圖片(拿不到圖片的base64); 4、設置和獲取disable, checked, selected等屬性時,請使用推薦的prop方法來替代attr方法(備注:有些瀏覽器上通過attr(“checked”, “checked”)無效); 5、對于each函數,return true同等于continue, return false同等于break; 6、對于頁面的命名里不應該包含大寫字母,eg. isNotAllowed.html(備注:有些瀏覽器不能識別大寫字母); 7、data方法在jQuery里面和zepto里面實現形式是不一樣。 jQuery里面的data方法存儲的數據是jQuery自己保存的。jQ也會獲取一次data-*的數據,但獲取之后后續的處理全在jQ的對象里面了,不會在HTML體現。 zepto里面data方法存儲的數據會同時寫到元素自身的data-*上面的。獲取以data-*開頭的屬性值時,請使用$(...).data(*)函數。 原生JS獲取的時候是屬性名是去掉data-,然后變成小駝峰形式,即前面的值應該用dom.dataset.someValue來獲取。反過來也一樣,即通過dom.dataset.someName設置 的值,在HTML上會表示成data-some-name="xx" 另外,data-*的命名規則按照規范,應該是全小寫,詞語間劃分使用"-",比如data-some-value=""。 8、 在for…in…循環內,最好用hasOwnProperty函數來判斷屬性是否為真正屬性,以免處理了無效值; 9、假如某個dom節點同個函數中被多次反復使用,可以手動把此值緩存,避免多次查找dom樹。例如var a = $(body); 10、在使用Date對象生成實例的時候,要注意使用標準寫法,不然某些瀏覽器會報錯。 不要習慣使用 new Date("YYYY-MM-DD HH:mm:SS"),因為這個格式并不是標準的格式, 但是當前webkit是支持的。長個心眼,如果以后遇到其他瀏覽器報錯或者是webkit放棄了這個支持的時候,方便查找原因; 11、由于JS沒有塊級作用域,因此如果在if塊和else塊里面都用到var i作為計數器,則可能報重復定義的錯誤; 12、關于變量聲明,Var a=b=0;相當于 var a; a= b; b = 0;b變成了全局變量; 13、for(var key in str) 中變量key在for里面的聲明和在for外面的聲明是一樣的,因為變量聲明會被提前到當前作用域的最前面;
標簽: |
|