• 前端技巧-w3c


    1.使用全等===比较符

    if (zeroAsAString === 0) {
        // 判断为false
    }
    在和null进行比较的时候,允许使用 == 比较符

    2.使用 .parseInt() 的时候,总是指定第二个 'radix' 参数

     parseInt("08", 10)

    3.避免比较true 和 false

    if (foo === true) {
        // 用了 === 倒是不错,可这是多余的
    }
    
    if (foo) {
        // 赞!
    }

    4.避免污染全局命名空间

    // 用 settings 作为对象命名
    var settings = {
        settingA: true,
        settingB: false,
        settingC: "test"
    }

    5.驼峰法变量命名

    var xPosition = obj.scrollLeft;

    6.循环的性能 - 缓存数组长度

    var toLoop = new Array(1000);
    
    for (var i = 0; i < toLoop.length; i++) {
        // 败家玩意 - 长度会反复算 1000 次你知道不?
    }
    
    for (var i = 0, len = toLoop.length; i < len; i++) {
        // 会过日子 - 长度只计算一次,然后缓存了
    }

    例外

    如果你对一个数组做循环来查找并删除某个元素,这就会改变数组长度。任何时候你只要会在循环内部增加或删除元素来改变数组的长度,你就给自己带来了麻烦。这种情况下,你要么每次改变后重新设置数组长度,要么就别缓存它了。
    7.循环的性能 - 使用 'break;' 和 'continue;'

      break 直接跳出 不再往下执行
      continue 跳出本次 接着执行

    var bigArray = new Array(1000);
    
    for (var i = 0, len = bigArray.length; i < len; i++) {
        if (i === 500) {
            break;
        }
        console.log(i); // 这样只会输出 0 - 499
    }

    8.函数调用不要传输太多的参数

    下面的例子预先构建了一个对象作为参数,或者把内联对象传递过去,这样就好多了。

    function greet(user) {
        alert(user.name);
    }
    greet({
        name: "Bob",
        gender: "male"
    });

    9.尽量减少重新绘制和重新布局

    var myList = document.getElementById("myList");
    
    for (var i = 0, len = arr.length; i < len; i++) {
    
        myList.innerHTML += "<li>" + arr[i].title + "</li>"; //重新布局 -- 增加到元素
    
    }

    在上面的 for 循环里,每次迭代会触发一次重新布局。10次迭代就是10次重新布局。

    现在考虑下面的代码:

    var constructedHTML = "";
    
    for (var i = 0, len = arr.length; i < len; i++) {
        constructedHTML += "<li>" + arr[i].title + "</li>"; //没有重新布局 - 增加到字符串
    }
    
    document.getElementById("myList").innerHTML = constructedHTML; //在这里重新布局

    10.设置ID

    function S4() {
       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
    }
    function guid() {
       return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
    }

    11.使用 data-* 属性

    <div id="test" data-is-bool="true" data-some-number="123"></div>
  • 相关阅读:
    CF459E Pashmak and Graph
    cf478D Red-Green Towers
    cf255C Almost Arithmetical Progression
    准备做,但是还没做的
    CF219C hoosing Capital for Treeland
    最小中间和
    【NO.9】jmeter
    【设计用例】站内信
    【有意思的BUG】客户端无厘头 已连网的场景初始化太慢 未连网的场景异常崩溃
    禅道BUG系统
  • 原文地址:https://www.cnblogs.com/hzx-5/p/9372806.html
Copyright © 2020-2023  润新知