编写可保护的JavaScript

语句和表达式

一切的块语句都应该运用花括号。包含:

  • if

  • for

  • while

  • do…while…

  • try…catch…finally

//不好的写法
if (condition)
    doSomethind();
//不好的写法
if (condition) doSomething();
//好的写法
if (condition) {
    doSomethind();
}
//不好的写法
if (condition) { doSomething(); }

花括号的对齐体式格局

两种作风:第一种将花括号安排在块语句中第一行代码的末端;第二种将左花括号安排于块语句首行的下一行。

块语句距离

  • 语句名、圆括号、和左花括号之间没有空格距离

    if(condition){

       doSomething();

    }

  • 在左圆括号之前和右圆括号以后各增加一个空格

    if (codition) {

       doSomething:

    }

  • 在左圆括号后和右圆括号前各增加一个空格

    if ( condition ) {

       doSomething();

    }

个人比较喜好第二种,易读但不是太贫苦。

switch语句

缩进

Java作风:

switch (condition) {
    case "first":
        //code
        break;
    case "second":
        //code
        break;
    default:
        //code
}

每条case语句相关于switch关键字都缩进一个层级
从第二条case语句最先,每条case语句前后都各有一个空行。

Dojo作风:

switch (condition) {
case "first":
    //code
    break;
case "second":
    //code
    break;
default:
    //code
}

default
很多人以为不管什么时候都不该该省略default,哪怕default什么都不做。
个人不太喜好写。

with语句

我们就只管不要写with语句了。

for-in轮回

最好运用hasOwnProperty()方法来为for-in轮回过滤出实例属性。

var prop;
for (prop in object) {
    if(object.hasOwnProperty(prop)) {
        console.log("...");
    }
}

不要把for-in用在数组的遍历上

//不好的写法
var vaules = [1, 2, 3],
    i;
for (i in vaules) {
    process(item[i]);
}

变量、函数和运算符

变量声明

发起将局部变量的定义作为函数内第一条语句。

function doSomethingWithItems(items) {
    
    var i, len;
    var value = 10;
    var result = value + 10;
    for (i=0, len=items.length; i < len; i++) {
        doSomething(items[i]);
    }
}

函数声明

引荐先声明JavaScript函数然后运用函数。

function doSomething() {
    //code
}
doSomething();

另外,函数声明不该出现在语句块以内。
//不好的写法

if (condition) {
    function doSomething() {
        //code
    }
} else {
    function doSomething() {
        //code
    }
}

函数挪用距离

引荐作风:在函数名和左花括号之间没有空格。

//好的写法
doSomething(item);
//不好的写法:看起来想一个块语句
doSomething (item);

马上挪用的函数

匿名函数可以经由过程在末了加上一对圆括号来马上实行并返回一个值,然后将这个值赋值给变量。

// 不好的写法
var value = function() {
    // 函数体
    return {
        message: "Hi"
    }
}();

为了让马上实行的函数可以被一眼看出来,可以将函数用一对圆括号包裹起来。

// 好的写法
var value = (function() {
    // 函数体
    return {
        message: "Hi"
    }
}());

严厉情势

最好不要再全局作用域中运用”use strict”。

// 不好的写法 - 全局的严厉情势
"use strict";
function doSomething() {
    // code
}
// 好的写法
function doSomething() {
    "use strict";
    // code
}

相称

引荐不要运用 == 和 !=,而应该运用 === 和 !==。

eval()

通用准绳:严禁运用Function,只在别无他法时运用eval()。setTimeout()和setInterval()也是可以运用的,但不用字符串情势而要用函数。
ECMAScript 5 严厉情势关于eval()有着严厉的限定,制止在一个关闭的作用域中运用它建立变量或许函数。

原始包装范例

JavaScript里有三种原始包装范例:String、Boolean和Number。每种范例都代表全局作用域中的一个组织函数,并离别示意各自对用的原始值的对象。

// 不好的做法
var name = new String("Nicholas");
    原文作者:loebmraz
    原文地址: https://segmentfault.com/a/1190000004998381
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞