zoukankan      html  css  js  c++  java
  • 从项目中总结的js知识点

    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');
    

    打印出来结果分别是:yesnono

    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()函数来判断一个数组是否包含某个元素其实也是一个循环判断。

  • 相关阅读:
    【Udacity】线性回归方程 Regression
    【Android】Warning :uninstalling will remove the application data!
    【Udacity】数据的差异性:值域、IQR、方差和标准差
    docker部署一个简单的mian.py项目文件
    ubuntu安装goland
    Go 语言变量、常量
    Go 语言数据类型
    linux 之文件重命名
    linux 下新建文件自动加锁的解决办法
    go之linux安装
  • 原文地址:https://www.cnblogs.com/wujuntian/p/6957737.html
Copyright © 2011-2022 走看看