七、JS 推荐写法

2018-06-17 19:15 更新
  1. 除了三目运算,if,else等禁止简写
     // 正确的书写
     if (true) {
         alert(name);
     }
     console.log(name);
     // 不推荐的书写
     if (true)
         alert(name);
     console.log(name);
     // 不推荐的书写
     if (true)
     alert(name);
     console.log(name)
  2. 在需要以{}闭合的代码段前增加换行,如:for if


     // 没有换行,小的代码段无法区分
     if (wl && wl.length) {
         for (i = 0, l = wl.length; i < l; ++i) {
             p = wl[i];
             type = Y.Lang.type(r[p]);
             if (s.hasOwnProperty(p)) {
                 if (merge && type == 'object') {
                     Y.mix(r[p], s[p]);
                 } else if (ov || !(p in r)) {
                     r[p] = s[p];
                 }
             }
         }
     }
     // 有了换行,逻辑清楚多了
     if (wl && wl.length) {
    
         for (i = 0, l = wl.length; i < l; ++i) {
             p = wl[i];
             type = Y.Lang.type(r[p]);
    
             if (s.hasOwnProperty(p)) {
                 // 处理merge逻辑
                 if (merge && type == 'object') {
                     Y.mix(r[p], s[p]);
                 } else if (ov || !(p in r)) {
                     r[p] = s[p];
                 }
             }
         }
     }
    换行可以是空行,也可以是注释
  3. 使用Function进行类的定义,不推荐继承,如需继承采用成熟的类库实现继承


    // 类的实现
     function Person(name) {
         this.name = name;
     }
    
     Person.prototype.sayName = function() {
         alert(this.name);
     };
    
     var me = new Person("Nicholas");
    
     // 将this放到局部变量self
     function Persion(name, sex) {
         var self = this;
    
         self.name = name;
         self.sex = sex; 
     }
    平时咱们写代码,基本都是小程序,真心用不上什么继承,而且继承并不是JS的擅长的语言特性,尽量少用。如果非要使用的话,注意一点:


    function A(){
        //...
    }
    function B(){
        //...
    }
    B.prototype = new A(); 
    B.prototype.constructor = B; //原则上,记得把这句话加上
    继承从原则上来讲,别改变他的构造函数,否则这个继承就显得很别扭了~
  4. 使用局部变量缓存反复查找的对象(包括但不限于全局变量、dom查询结果、作用域链较深的对象)


    // 缓存对象
    var getComment = function() {
        var dom = $("#common-container"),               // 缓存dom
                    appendTo = $.appendTo,                      // 缓存全局变量
            data = this.json.data;                      // 缓存作用域链较深的对象
    }
    
    
    //当需要缓存this时必须使用self变量进行缓存
    // 缓存this
    function Row(name) {
        var self = this;
    
        self.name = name;
        $(".row").click(function() {
            self.getName();
        }); 
    }
     self是一个保留字,不过用它也没关系。在这里,看个人爱好吧,可以用_this, that, me等这些词,都行,但是团队开发的时候统一下比较好。
  5. 使用eval,采取$.parseJSON
    三个原因:
        有注入风险,尤其是ajax返回数据
        不方便debug效率低,eval是一个执行
        效率很低的函数
    建议: 使用new Function来代替eval的使用,最好就别用。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号