采用一定的编码惯例,可以使得项目中的代码提到较高的一致性,可读性和可预测性。

1.缩进

进可以提高代码的可读性。不过错误的缩进也可能导致代码的误读。有人认为缩进应该使用tab,另外的一些人主张采用4个空格。4个空格的缩进目前是主流的
做法。简单地说,对于所有花括号中的代码(包括do, while, for, for-in, if, switch,
以及对象声明中的对象属性)都应该缩进4个空格。下面是一个缩进的例子:

  1. function outer(a, b) {
    var c = 1,
  2. d = 2,
  3. inner;
  4. if (a > b) {
  5. inner = function () {
  6. return {
  7. r: c - d
  8. };
  9. };
  10. } else {
  11. inner = function () {
  12. return {
  13. r: c + d
  14. };
  15. };
  16. }
  17. return inner;
  18. }

2. 花括号
  对于循环体和if语句的内容只有一行的时候,花括号是可以省略的,但一个好的习惯应该总是加上花括号:

  1. // bad practice
  2. for (var i = 0; i < 10; i += 1)
  3. alert(i);
  4. alert(i + " is " + (i % 2 ? "odd" : "even"));

所以我们建议总是加上花括号:

  1. for (var i = 0; i < 10; i += 1) {
  2. alert(i);
  3. }

对于if语句来说也是这样的:

  1. // bad
  2. if (true)
  3. alert(1);
  4. else
  5. alert(2);
  6.  
  7. // better
  8. if (true) {
  9. alert(1);
  10. } else {
  11. alert(2);
  12. }

3. 左边花括号的位置
有人喜欢把左边花括号放在与上一行,有人喜欢另开一行:

  1. if (true) {
  2. alert("It's TRUE!");
  3. }
  4. //or:
  5. if (true)
  6. {
  7. alert("It's TRUE!");
  8. }

上面的代码都没有任何问题,两种形式可以按个人喜好任选一种。但如果函数的返回值是一个对象,就要小心了:// warning: unexpected return value

  1. function func() {
  2. return
  3. {
  4. name: "Batman"
  5. };
  6. }

如果你期望上面的代码能返回一个对象,那结果可能会出乎意料。因为上面的函数返回的是undefined。因为没有加分号的return对于JavaScript解释器来说看起来是这样的:// warning: unexpected return value

  1. function func() {
  2. return undefined;
  3. // unreachable code follows...
  4. {
  5. name: "Batman"
  6. };
  7. }

所以,我们应该总是把第一个花括号放到上一行的结束处:

  1. function func() {
  2. return {
  3. name: "Batman"
  4. };
  5. }

4. 空格
空格应该让代码更易读,所以应该放置空格的地方有很多:
   在for循环语句中里的分号后面: for (var i = 0; i < 10; i += 1) {...}
   for语句要初始化多个变量时也是如此:for (var i = 0, max = 10;i < max; i += 1) {...}
   数组定义时的逗号后面:var a = [1, 2, 3];
   定义对象属性的冒号后面和逗号后面:var o = {a: 1, b: 2};
   函数参数列表中的逗号后面: myFunc(a, b, c)
   函数声名中的花括号前面: function myFunc() {}
   当声名匿名函数时,function关键字后面:var myFunc = function () {};

总之,空格应该让代码能呼吸:

  1. // generous and consistent spacing
  2. // makes the code easier to read
  3. // allowing it to "breathe"
  4. var d = 0,
  5. a = b + 1;
  6. if (a && b && c) {
  7. d = a % c;
  8. a += d;
  9. }
  10.  
  11. // antipattern
  12. // missing or inconsistent spaces
  13. // make the code confusing
  14. var d= 0,
  15. a =b+1;
  16. if (a&& b&&c) {
  17. d=a %c;
  18. a+= d;
  19. }

5. 构造函数的函数名要大写首字母
JavaScript没有“类”的概念,但可以声名能用new调用的构造函数:

var adam = new Person();

这种构造函数不象Java或C,要放在类的定义中,因此它和其它的函数看起来是一样的。要区分构造函数,可以把函数名的首字母大写:function MyConstructor() {...}

  1. function myFunction() {...}

后面我们还会介绍如何让一个函数用起来时表现得像个构造函数(而不是一般函数)。但通过首字母大写,可以有效区别它们。

6. 区分标识符中的单词

对于函数名中的单词,应该用驼峰式(camel case)的大小写。如:myFunction(),calculateArea() 以及 getFirstName()。
对于变量,或是对象的属性,则应该用下划线的形式:如:first_name, favorite_bands, old_company_name。
对于常量,应该用全大写的形式:

  1. // precious constants, please don't touch
  2. var PI = 3.14,
  3. MAX_WIDTH = 800;

对于对象中的私有属性和方法,则在它们前面加上下划线:

  1. var person = {
  2. getName: function () {
  3. return this._getFirst() + ' ' + this._getLast();
  4. },
  5. _getFirst: function () {
  6. // ...
  7. },
  8. _getLast: function () {
  9. // ...
  10. }

在上面的代码中,getName没有加下划线,意思是public的方法,而加了下划线的_getFirst和_getLast则是私有的方法。

JavaScript基础JavaScript的常用编码惯例(007)的更多相关文章

  1. JavaScript基础进阶之常用字符串方法总结

    前面三篇文章简单的把JavaScript基础内容过了一遍,我们已经可以用JavaScript写一些简单的代码了. 今天主要总结一下JavaScript中String对象中自带的一些方法,来帮助我们处理 ...

  2. JavaScript基础——JavaScript语法基础(笔记)

    JavaScript语法基础(笔记) 1.语言编码 JavaScript语言建立在Unicode字符集基础之上,因此脚本中,用户可以使用双字节的字符命名常量.变量或函数等. [示例] var 我=&q ...

  3. (译文)JavaScript基础——JavaScript中的深拷贝

    在JavaScript中如何拷贝一个对象? 通过引用调用 function mutate(obj) { obj.a = true; } const obj = {a: false}; mutate(o ...

  4. JavaScript基础——JavaScript函数(笔记)

    avaScript 函数(笔记) JavaScript 是函数式编程语言,在JavaScript脚本中可以随处看到函数,函数构成了JavaScript源代码的主体. 一.定义函数 定义函数的方法有两种 ...

  5. JavaScript基础——JavaScript数据类型(笔记)

    数据类型(笔记) null和undefined 在JavaScript中有两个特殊的值: null和undefined.简单说明如下: null 是Null类型的值,Null类型的值只有一个值(nul ...

  6. JavaScript基础——JavaScript常量和变量(笔记)

    JavaScript常量和变量(笔记) Javascript代码严格区分大小写. javascript暂不支持constant关键字,不允许用户自定义常量. javascript使用var关键字声明变 ...

  7. JavaScript基础——JavaScript入门(笔记)

    JavaScript入门(笔记) JavaScript是一种轻量级.解释型的Web开发语言,该语言系统不是很庞杂,简单易学.由于所有现代浏览器都已嵌入JavaScript引擎,JavaScript源代 ...

  8. JavaScript基础Javascript中的循环(003)

    1.普通循环JavaScript中一般的循环写法是这样的: // sub-optimal loop for (var i = 0; i < myarray.length; i++) { // d ...

  9. JavaScript基础------JavaScript语法

    js的注释与分号 // 单行注释 /**/多行注释 ctrl +shift +/ 语句结束使用分号,如果省略,则由解析器确定语句的结尾js语法 1.变量.函数名.操作符都区分大小写 2.标识符 (1) ...

随机推荐

  1. Java实现蓝桥杯凑算式(全排列)

    题目6.凑算式 凑算式 B DEF A + - + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中AI代表19的数字,不同的字母代表不同的数字. 比如: ...

  2. Java实现 LeetCode 434 字符串中的单词数

    434. 字符串中的单词数 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符. 请注意,你可以假定字符串里不包括任何不可打印的字符. 示例: 输入: "Hello, my nam ...

  3. Java实现第八届蓝桥杯图形排版

    标题:图形排版 小明需要在一篇文档中加入 N 张图片,其中第 i 张图片的宽度是 Wi,高度是 Hi. 假设纸张的宽度是 M,小明使用的文档编辑工具会用以下方式对图片进行自动排版: 1. 该工具会按照 ...

  4. java实现串的反转

    串的反转 反转串 我们把"cba"称为"abc"的反转串. 求一个串的反转串的方法很多.下面就是其中的一种方法,代码十分简洁(甚至有些神秘),请聪明的你通过给出 ...

  5. 1.keras-构建基本简单网络实现线性回归

    构建基本简单网络实现线性回归 1.创建数据绘制散点图 import keras import numpy as np import matplotlib.pyplot as plt from kera ...

  6. 诸葛亮vs司马懿,排序算法大战谁能笑到最后?

    阵前对峙 公元234年,蜀汉丞相诸葛孔明再次北伐. 一日,与司马仲达所率魏军两军相峙,二人阵前舌战. 司马曰:"诸葛村夫,吾与汝相斗数年,斗兵斗阵斗谋略,均已疲乏.今日,何不一改陈规,斗点新 ...

  7. LeetCode 75,90%的人想不出最佳解的简单题

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题的44篇文章,我们一起来看下LeetCode的75题,颜色排序 Sort Colors. 这题的官方难度是Medi ...

  8. 痞子衡嵌入式:链接函数到8字节对齐地址或可进一步提升i.MXRT内核执行性能

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT上进一步提升代码执行性能的经验. 今天跟大家聊的这个话题还是跟痞子衡最近这段时间参与的一个基于i.MXRT1170的大项目有 ...

  9. PE文件介绍 (2)-DOS头,DOS存根,NT头

    PE头 PE头由许多结构体组成,现在开始逐一学习各结构体 0X00 DOS头 微软创建PE文件格式时,人们正广泛使用DOS文件,所以微软充分考虑了PE文件对DOS文件的兼容性.其结果是在PE头的最前面 ...

  10. [CQOI2007]矩形

    题目   点这里看题目. 分析   插头 DP ,考虑枚举一下两块之间的分割线,本质上就是两个端点都在边界上的路径.    DP 过程中,我们将没有端点在边界上面的路径称为 1 路径,反之叫 2 路径 ...