//参考《编写可维护的Javascript》

 一:缩进
// 第一行的层级由4个空格组成,避免使用制表符tab进行缩进

//好的写法
if (true) {
    doSomething();
}

 二:行的长度
// 每行长度不应该超过80个字符。如果一行对于80个字符,应当在一个运算符(逗号,加号符)
// 后换行。下一行应当增加两级缩进

//好的写法
doSomething(argument1, argument2, argument3, argument4,
    argument5);

 三:原始值
// 字符串应当使用双引号(避免使用单引号)且保持一行。避免在字符串中使用斜线另起一行

//好的写法
var name = "M";

//不好的写法
var name = 'M';

//不好的写法:字符串结束之前换行
var longString = "Here's the sorry, of a man \
named Brady.";

// 数字应当使用十进制整数,科学计数法表示整数,十六进制整数,或者十进制浮点小数,
// 小数点前后应当至少保留一位数字。避免使用八进制直接量

//好的写法
var count = 10;
var price = 10.00;
var price = 10.0;
var num = 0x23;

//不好的写法
var price = 10.;
var price = .1;
var price = 010;

特殊值null除了下述情况下应当避免使用
// 1.用来初始化一个变量,这个变量可能被赋值为一个对象
// 2.用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象
// 3.当函数的参数期望是对象时,被用作参数传入
// 4.当函数的返回值期望是对象时,被用作返回值传出

Example:

//好的写法
var person = null;

//好的写法
function getPerson() {
    if (condition) {
        return new Person("M");
    } else {
        return null;
    }
}

//好的写法
var person = getPerson();
if (person !== null) {
    doSomething();
}

//不好的写法:和一个未被初始化的变量比较
var person;
if (person != null) {
    doSomething();
}

//不好的写法:通过测试判断某个参数是否被传递
function doSomething(arg1, arg2, arg3, arg4) {
    if (arg4 !== null) {
        doSomething();
    }
}

//避免使用特殊值 undefined 判断一个变量是否定义应当使用typeof操作符

//好的写法
if (typeof variable == "undefined") {
    //do something;
}

//不好的写法:使用了undefined直接量
if (variable == undefined) {
    // do something;
}

四:运算符间距

// 三元运算符前后必须使用一个空格来保持表达式的整洁。
// 操作符包括赋值运算符和逻辑运算符

//好的写法
var found = (value[i] === false);

//好的写法
if (found && (count > 10)) {
    doSomething();
}

//好的写法
for (i = 0; i < count; i++) {
    process(i);
}

//不好的写法:丢失了空格
var found = (varlues[i]===false);

if (found&&(count>10)) {
    doSomething();
}

for (i=0; i<count; i++) {
    process(i);
}

五:括号间距

// 当使用括号时,紧接左括号右括号之前不应该有空格

//好的写法
var found = (varlues[i] === false);

//好的写法
if (found && (count > 10)) {
    doSomething();
}

//好的写法
for (i = 0; i < count; i++) {
    process(i);
}

//不好的写法:左括号之后有额外的空格
var found = ( varlues[i] === item);

六:对象直接量

// 对象直接量应当使用下列格式
// 1.起始左花括号应当使用如下格式
// 2.每个属性的名值对应保持一个缩进,第一个属性应当在左花括号后另起一行
// 3.每个属性的名值对应当使用不含引号的属性名,气候紧跟一个冒号(之前不含空格),而后是值
// 4.倘若属性值是函数类型,函数体应当在属性名之下另起一行,而且其前后均应保留一个空行。
// 5.一组相关的属性前后可以插入空行以提升代码的可读性
// 6.结束的右花括号应当独占一行

Example:

//好的写法
var object = {

key1: value1,
    key2: value2,

func: function() {
        //do something
    },

key3: value3
};

//不好的写法:不恰当的缩进
var object = {
                key1: value1,
                key2: value2
};

//不好的写法:函数体周围缺少空行
var object = {

key1: value1,
    key2: value2,
    func: function() {
        //do something
    },
    key3: value3
};

当对象字面量作为函数参数时,如果值是变量,起始花括号应当同函数名在同一行。
所有其余先列出的规则同样适用。

//好的写法
doSomething({
    key1: value1,
    key2: value2
});

//不好的写法:所有代码在一行上
doSomething({ key1: value1, key2: value2 });

JavaScript编写风格指南 (一)的更多相关文章

  1. JavaScript编写风格指南 (三)

    七(七):严格模式 // 严格模式应当仅限在函数内部使用,千万不要在全局使用 //不好的写法:全局使用严格模式"user strict"; function doSomething ...

  2. JavaScript编写风格指南 (二)

    七:注释 // 频繁的使用注释有助于他人理解你的代码// 1.代码晦涩难懂// 2.可能被误认为是错误的代码// 3.必要但不明显的针对特定浏览器的代码// 4.对于对象,方法或者属性,生成文档是有必 ...

  3. 13点值得我们注意的谷歌的JavaScript编写风格

    对于编写有效的JavaScript来说,这些并不是硬性的.快速的规则,而只是在源文件中维护一致的.吸引人的样式选择的规则.这对于JavaScript来说尤其有趣,它是一种灵活且多变的语言,允许多种风格 ...

  4. Google JavaScript代码风格指南

    Google JavaScript代码风格指南 修正版本 2.28 Aaron Whyte Bob Jervis Dan Pupius Eric Arvidsson Fritz Schneider R ...

  5. Protocol buffers编写风格指南

    原文链接:https://developers.google.com/protocol-buffers/docs/style Style Guide 本文说明了.proto文件的编写风格指南.遵循这些 ...

  6. JavaScript编码风格指南(中文版)

    前言: 程序语言的编码风格对于一个长期维护的软件非常重要,特别是在团队协作中.如果一个团队使用统一规范的编码分风格,可以提高团队的协作水平和工作效率.编程风格指南的核心是基本的格式化规则,这些规则决定 ...

  7. 《编写可维护的 Javascript》读书笔记(附录 A 部分):Javascript 编码风格指南(1)原始值

    记录一下比较有用的编码规范(该指南是基于 Java 语言编码规范和 Javascript 编程规范,同时结合作者 Nicholos Zakas 的个人经验和喜好). 一些关于格式(包括缩进.行的长度. ...

  8. JavaScript 代码风格指南

    一.基本格式 缩进 建议每级4个空格,可以给编辑器设置tab = 4个空格,自动转换 分号 不要省略分号,防止ASI(自动插入分号)错误 行宽 每行代码不超过80个字符,过长应该用操作符手动断行 断行 ...

  9. Airbnb JavaScript 编码风格指南(2018年最新版)

    原网址 :  https://segmentfault.com/a/1190000013040555 类型 基本类型:直接存取 string number boolean null undefined ...

随机推荐

  1. cocos2d-x学习之路(二)——分析AppDelegate和HelloWorldScene文件

    这里我们来看一下cocos自动给我们生成的工程里有些什么东西,并且分析一下这些代码的用途,来为我们以后编写cocos程序铺下基础. 这里我建议看我这份随笔的看官先看看cocos官网的快速入门手册,不然 ...

  2. Web项目开发流程 PC端

      一.了解.明确需求. 这个应该是第一步了,不了解需求你就不知道为什么要做,要怎么去做这个项目的工作. (1)明确需求是相当重要的,很有必要去和产品经理.设计人员去沟通,需要明白每一个按钮,每一个开 ...

  3. Alpha阶段结束分数(百分制)

  4. Daily Scrum - 11/20

    好习惯的养成需要两个星期. ——砖家 今天我们小组又进行了一次愉快的例会,可以看到daily scrum在我们小组已经逐渐变成了每日的好习惯.首先对以下一些团队routine达成了共识: 1.spri ...

  5. Daily Scrum - 11/16

    时间:午饭 今天小组例会主要是汇报了各自的进度.任烁那边主要为工程添加了单词的类(包含各个参数等成员变量),方便以后实现算法:拜重阳实现了一个简易的“点进-点出”UI,可谓迈出了艰难的第一步:章玮和罗 ...

  6. 从零开始学Kotlin-扩展函数(10)

    从零开始学Kotlin基础篇系列文章 什么是扩展函数 扩展函数数是指在一个类上增加一种新的行为,我们甚至没有这个类代码的访问权限: Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 ...

  7. 随web应用启动而自启动的后台线程

    当前遇到一个需求: 需要在web应用启动的时候就启动一个线程定时的来做某项工作. 有两种解决方法: 1.增加一个监听器Listener来实现相关功能. 2.增加一个随项目启动的servlet来实现相关 ...

  8. ELK环境配置

    一.安装java环境 1.下载jre并安装,安装过程中没有什么特殊的,一直默认下一步即可. 2.配置环境变量 其中变量值为我们安装的jre的路径 二.安装elasticsearch 1.下载es安装包 ...

  9. Python day5 --------递归、匿名函数、高阶函数、内置函数

    一.递归 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 递归要求: 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减 ...

  10. BZOJ2622 深入虎穴(最短路径)

    如果对某个点能求出与其相邻的所有点到达出口的最短时间,那么该点的答案就可以在其中取次小值了. 对于dijkstra魔改一下就能做到这个.初始时将所有出口的最短时间设为0并放入堆,记录最短和次短路径,每 ...