javascript最佳实践

本文探讨了JavaScript的编码规范,包括提高代码可读性的策略,如统一缩进、注释规则、合理命名等;强调了减少代码间耦合的重要性,如避免HTML与JavaScript、CSS与JavaScript的紧密耦合;介绍了尊重对象所有权、避免全局量、使用常量等最佳实践;并讨论了提升性能的方法,如避免全局查找、优化循环等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js的最佳实践,让我们少走弯路,代码更容易维护和扩展。

可读性:

  1. 统一的缩进方式。
  2. 每个函数或方法都应该包含一个注释。

  3. 单个任务的多行代码需要一个注释。

  4. 复杂算法需要一个注释。

  5. hack注释。

  6. 变量和函数的命名合乎逻辑。

减少代码间的耦合:

  1. html和javascript之间的交换经常会耦合在一起,使得代码变得难以维护。
<!-- 使用了 <script> 的紧密耦合的 HTML/JavaScript --> 
<script type="text/javascript">
  document.write("Hello world!");
</script>
<!-- 使用事件处理程序属性值的紧密耦合的 HTML/JavaScript -->
<input type="button" value="Click Me" onclick="doSomething()" />

var container = document.getElementById("container");
container.innerHTML = "<div class=\"msg\"><p class=\"post\">" + msg + "</p>" +
            "<p><em>Latest message above.</em></p></div>";

这里的document.write, onclick, innerHTML都让javascript和html耦合在一起。当页面问题出现问题时,很难定位错误的发生。所以尽量避免在 JavaScript 中创建大量 HTML。

  2.  css与javascript的松散耦合: js中通过动态更改样式类而非特定样式来实现。

3. 应用逻辑和事件处理程序解耦:事件处理程序不应包含了应用逻辑,尽可能的将应用逻辑封装成函数的形式来调用,

(1)勿将 event 对象传给其他方法;只传来自 event 对象中所需的数据。

(2)任何可以在应用层面的动作都应该可以在不执行任何事件处理程序的情况下进行。

(3)任何事件处理程序都应该处理事件,然后将处理转交给应用逻辑。

 

尊重对象所有权: 不能修改不属于你的对象

(1)不要为实例或原型添加属性。

(2)不要为实例或原型添加方法。

(3)不要重定义已存在的方法。

避免全局量: 使用命名空间有助于确保代 码可以在同一个页面上与其他代码以无害的方式一起工作。(Wrox.ProAjax.EventUtil.addHandler)

//两个全局量——避免!! 
var name = "Nicholas"; function sayName(){
        alert(name);
    }

//一个全局量——推荐
var MyApplication = {
    name: "Nicholas",
    sayName: function(){
        alert(this.name);
    } 
};

使用常量

  1. 任何在多处用到的值都应抽取为一个常量。

  2. 任何用于显示给用户的字符串,都应被抽取出来以方便国际化。

  3. 在 Web 应用中,资源位置很容易变更,所以推荐用一个公共地方存放所有的 URL。

  4. 任意可能会更改的值。

性能:

  1. 避免全局查找
  2. 避免with语句
  3. 避免不必要的属性查找

  4. 优化循环: (减值迭代)(简化终止条件)(简化循环体)(使用后测试循环)

  5. 避免双重解释

  6. 最小化语句数:var count = 5, color = "blue", values = [1,2,3], now = new Date();

  7. 插入迭代值:var name = values[i++];

  8. 数组和对象使用字面量来表示。

  9. 最小化现场更新(例如使用:document.createDocumentFragment)

  10. 使用 innerHTML 比 (createElement, appendChild)快。

  11. 使用事件代理

  12. 注意HTMLCollection 

    var images = document.getElementsByTagName("img"),
    image,
    i, len;
        for (i=0, len=images.length; i < len; i++){
            image = images[i];
    // 处理
     }

    这里直接访问image可获得更好的性能,不要直接访问images[i]。

 

 

 

 

 

内容总结至《JavaScript高级程序设计(第3版)》第24章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值