js简单知识点

2017-04-14  本文已影响0人  hanyuntao

1. 条件判断的陷阱

在if判断中,使用===作比较,避免掉入==造成的陷阱。

在条件判断时,这样的一些值表示falsenullundefined,字符串' ',数字0NaN
而在==时,则会有一些让人难以理解的陷阱,如:

(function () { 
  var undefined; 
  undefined == null; // true 
  1 == true; //true 
  2 == true; // false 
  0 == false; // true 
  0 == ''; // true 
  NaN == NaN;// false 
  [] == false; // true 
  [] == ![]; // true 
})();

对于不同类型的 == 判断,有这样一些规则,顺序自上而下:

  1. undefinednull相等
  2. 一个是number一个是string时,会尝试将string转换为number
  3. 尝试将boolean转换为number01
  4. 尝试将Object转换成numberstring,取决于另外一个对比量的类型
    所以,对于0、空字符串的判断,建议使用 ======会先判断两边的值类型,类型不匹配时为false

2. 简单类型转换

parseInt('08'); // 0 
parseInt('08', 10); //8

3. 字符串拼接

字符串拼接,应使用数组保存字符串片段,使用时调用join方法。避免使用++=的方式拼接较长的字符串,每个字符串都会使用一个小的内存片段,过多的内存片段会影响性能。如:

不好的拼接方式,+=

var str = ''; 
for (var i = 0, len = list.length; i < len; i++) { 
  str+= '<div>' + list[i] + '</div>'; 
} 
dom.innerHTML = str;

正确拼接方式,Array的push+join

var str = []; 
for (var i = 0, len = list.length; i < len; i++) { 
  str.push('<div>'+ list[i] + '</div>'); 
} 
dom.innerHTML = str.join('');

4. 获取元素

获取单个元素

通常,我们使用document.getElementById来获取dom元素,避免使用document.alldocument.getElementById是标准方法,兼容所有浏览器

ie浏览器会混淆元素的idname属性,document.getElementById可能获得不期望的元素。
在对元素的idname属性的命名需要非常小心,应使用不同的命名法。
下面是一个nameid冲突的例子:

<input type="text" name="test"> <div id="test"></div>
<button onclick="alert(document.getElementById('test').tagName)"></button>
<!-- ie6下为INPUT -->

5.设置兼容事件

//设置兼容事件
        function addEvent(ele, event, func) {
            if (ele.addEventListener) {
                ele.addEventListener(event, func, false);
            } else if (ele.attachEvent) {
                ele.attachEvent('on' + event, func);
            } else {
                ele['on' + event] = func;
            }
        }
上一篇 下一篇

猜你喜欢

热点阅读