七、JS 推荐写法
2018-06-17 19:15 更新
- 除了三目运算,if,else等禁止简写
// 正确的书写 if (true) { alert(name); } console.log(name); // 不推荐的书写 if (true) alert(name); console.log(name); // 不推荐的书写 if (true) alert(name); console.log(name)
- 在需要以{}闭合的代码段前增加换行,如: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]; } } } } 换行可以是空行,也可以是注释
- 使用Function进行类的定义,不推荐继承,如需继承采用成熟的类库实现继承
平时咱们写代码,基本都是小程序,真心用不上什么继承,而且继承并不是JS的擅长的语言特性,尽量少用。如果非要使用的话,注意一点:// 类的实现 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;
}
继承从原则上来讲,别改变他的构造函数,否则这个继承就显得很别扭了~function A(){ //... } function B(){ //... } B.prototype = new A();
B.prototype.constructor = B; //原则上,记得把这句话加上 - 使用局部变量缓存反复查找的对象(包括但不限于全局变量、dom查询结果、作用域链较深的对象)
self是一个保留字,不过用它也没关系。在这里,看个人爱好吧,可以用_this, that, me等这些词,都行,但是团队开发的时候统一下比较好。// 缓存对象 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(); });
} - 使用eval,采取$.parseJSON
三个原因:
有注入风险,尤其是ajax返回数据
不方便debug效率低,eval是一个执行
效率很低的函数
建议: 使用new Function来代替eval的使用,最好就别用。
以上内容是否对您有帮助:
更多建议: