《javascript高级程序设计》 第24章 最佳实践 Best Practices

24.1 可维护性 Maintainability
24.1.1 什么是可维护的代码 What Is Maintainable Code?
24.1.2 代码约定 Code Conventions 
24.1.3 松散耦合 Loose Coupling
24.1.4 编程实践 Programming Practices
24.2 性能 Performance
24.2.1 注意作用域 Be Scope-Aware
24.2.2 选择正确方法 Choose the Right Approach
24.2.3 最小化语句数 Minimize Statement Count
24.2.4 优化DOM 交互 Optimize Dom Interactions
24.3 部署 Deployment
24.3.1 构建过程 Build Process
24.3.2 验证 Validation
24.3.3 压缩 Compression

 3. 解耦应用逻辑/事件处理程以下是要牢记的应用和业务逻辑之间松散耦合的几条原则:

 勿将event 对象传给其他方法;只传来自event 对象中所需的数据;
 任何可以在应用层面的动作都应该可以在不执行任何事件处理程序的情况下进行;
 任何事件处理程序都应该处理事件,然后将处理转交给应用逻辑。

3.避免与null 进行比较
如果看到了与null 比较的代码,尝试使用以下技术替换:
 如果值应为一个引用类型,使用instanceof 操作符检查其构造函数;  if (values instanceof Array)
 如果值应为一个基本类型,使用typeof 检查其类型;
 如果是希望对象包含某个特定的方法名,则使用typeof 操作符确保指定名字的方法存在于对
象上。

24.2.1 注意作用域
1.避免全局查找
var doc = document;
var imgs = doc.getElementsByTagName("img");
2. 避免with 语句

24.2.2 选择正确方法
1. 避免不必要的属性查找
使用变量和数组要比访问对象上的属性更有效率,后者是一个O(n)操作。

24.2.3 最小化语句数
//用4 个语句创建和初始化数组——浪费
var values = new Array();
values[0] = 123;
values[1] = 456;
values[2] = 789;

//只用一条语句创建和初始化数组
var values = [123, 456, 789];

24.2.4 优化DOM交互
var list = document.getElementById("myList"),
fragment = document.createDocumentFragment(),

for (i=0; i < 10; i++) {
item = document.createElement("li");
fragment.appendChild(item);
。。。
2. 使用 innerHTML

3. 使用事件代理
任何可以冒泡的事件都不仅仅可以在事件目标上进行处理,目标的任何祖先节点上也能处理。使用这个知识,就可以将事件处理程序附加到更高层的地方负责多个目标的事件处理。

4. 注意HTMLCollection
避免在循环体内多次调用HTMLCollection。
var images = document.getElementsByTagName("img"),
image,
i, len;
for (i=0, len=images.length; i < len; i++){
image = images[i];
//处理
}

24.3.3 压缩
1. 文件压缩
2. HTTP 压缩

原文地址:https://www.cnblogs.com/della/p/3296444.html