《编写可维护的 JavaScript》笔记二

返回列表

读书笔记 | 小叉 | 2013年07月05日

【第2章 注释】

2.1 单行注释

  • 独占一行的注释,用来解释下一行代码。这行注释之前总是有一个空行,且缩进层级和下一行代码保持一致。
           

  • 在代码尾部的注释。代码结束到注释之间至少有一个缩进。注释(包括之前的代码部分)不应当超过单行最大字符数限制,如果超过了,就将这条注释放置于当前代码行的上方。

  • 被注释掉的大段代码。

在双斜线之后增加一个空格有助于阅读。


2.2 多行注释

Java 风格:

/*
 * 另一段注释
 * 这段注释包含两行文本
 */

文档注释:

@符号表示一个或多个属性

/**
返回一个对象,这个对象包含被提供对象的所有属性。
更多的介绍……
@method merge
@param {Object} 被合并的一个或多个对象
@return {Object} 一个新的合并后的对象
**/



【第3章 语句和表达式】

所有的块语句都应当使用花括号,包括:

  • if

  • for

  • while

  • do...while...

  • try...catch...finally


3.1 花括号的对齐方式

将左花括号放置在块语句中第一句代码的末尾,比如:

if (condition) {
    doSomething();
} else {
    doSomethingElse();
}

不推荐将左花括号放置于块语句首行的下一行,以免导致错误的分号自动插入。


3.2 块语句间隔

语句名、圆括号和左花括号之间没有间隔。

左圆括号之前和右圆括号之后各添加一个空格。

左圆括号后和右圆括号前各添加一个空格。


3.3 switch 语句

第一种,每条 case 语句相对于 switch 关键字都缩进一个层级。

从第二条 case 语句开始,每条 case 语句前后各有一个空行。

switch(condition) {
    case "first":
        // 代码
        break;

    case "second":
        // 代码
        break;

    case "third":
        // 代码
        break;

    default:
        // 代码
}

另一种,case 关键字保持和 switch 关键字左对齐。

在语句中并没有空行的存在。

switch(condition) {
case "first":
    // 代码
    break;
case "second":
    // 代码
    break;
case "third":
    // 代码
    break;
default:
    // 代码
}

case 语句的“连续执行”应当看起来逻辑清晰或添加注释说明。

没有默认行为是可省略 default ,但最好写上注释表明。


3.4 with 语句

强烈推荐避免使用 with 语句。


3.5 for 循环

传统的 for 循环往往用于遍历数组。


3.6 for-in 循环

for-in 循环是用来遍历对象属性的。



【第4章 变量、函数和运算符】

4.1 变量声明

不论 var 语句是否真正会被执行,所有的 var 语句都提前到包含这段逻辑的函数的顶部执行。

因此,推荐将所有变量声明放在函数顶部而不是散落在各个角落。


4.2 函数声明

和变量声明一样,函数声明也会被 JavaScript 引擎提前。

因此,推荐总是先声明 JavaScript 函数然后再使用函数。

此外,函数声明不应当出现在语句块之内。


4.3 函数调用间隔

在函数名和左括号直接没有空格。这样做是为了将它和块语句区分开来。


4.4 立即调用函数

将函数用一对圆括号包裹起来,这样代码在第一行就有了一个标示符(左圆括号),表明这是一个立即执行的函数。

而不是在函数尾部添加一对圆括号,这样除非读完整段代码看到最后一行的那对圆括号,否则不会知道是将函数赋值给变量还是将函数的执行结果复制给变量。


4.6 相等

推荐总是使用 === 和 !==

在和 null 比较的时候用 ==,因为这时程序编写者往往都是想判断值是否为 null 或 undefined。


4.6.1 eval()

只在解析 JSON 时才使用 eval();

* ECMAScript 5 严格模式对于 eval() 有着严格的显示,禁止在一个封闭的作用域中使用它创建新变量或者函数。这条限制帮助我们避免了 eval() 先天的安全漏洞。


4.6.2 原始包装类型

JavaScript 里有 3 种原始包装类型:String、Boolean、Number。

var name = "Nicholas";
name.author = true;
console.log(name.author); // undefined

在第 2 行结束后,author 属性就不见了。因为表示这个字符串的临时 String 对象在第 2 行执行结束后就销毁了,在第 3 行中又创建了一个新 String 对象。同样你也可以手动创建这些对象:

// 不好的做法
var name = new String("Nicholas");
var author = new Boolean(true);
var count = new Number(10);

尽管我们可以使用这些包装类型,但强烈推荐避免使用它们。

这里是小叉试验场的简版,请到正式版参与评论

下一篇:教你怎么把图标字体(IconFont)转为 PNG

上一篇:《编写可维护的 JavaScript》笔记一

返回列表