JavaScript基础JavaScript的常用编码惯例(007)
采用一定的编码惯例,可以使得项目中的代码提到较高的一致性,可读性和可预测性。
1.缩进
缩
进可以提高代码的可读性。不过错误的缩进也可能导致代码的误读。有人认为缩进应该使用tab,另外的一些人主张采用4个空格。4个空格的缩进目前是主流的
做法。简单地说,对于所有花括号中的代码(包括do, while, for, for-in, if, switch,
以及对象声明中的对象属性)都应该缩进4个空格。下面是一个缩进的例子:
function outer(a, b) {
var c = 1,
d = 2,
inner;
if (a > b) {
inner = function () {
return {
r: c - d
};
};
} else {
inner = function () {
return {
r: c + d
};
};
}
return inner;
}
2. 花括号
对于循环体和if语句的内容只有一行的时候,花括号是可以省略的,但一个好的习惯应该总是加上花括号:
// bad practice
for (var i = 0; i < 10; i += 1)
alert(i);
alert(i + " is " + (i % 2 ? "odd" : "even"));
所以我们建议总是加上花括号:
for (var i = 0; i < 10; i += 1) {
alert(i);
}
对于if语句来说也是这样的:
// bad
if (true)
alert(1);
else
alert(2); // better
if (true) {
alert(1);
} else {
alert(2);
}
3. 左边花括号的位置
有人喜欢把左边花括号放在与上一行,有人喜欢另开一行:
if (true) {
alert("It's TRUE!");
}
//or:
if (true)
{
alert("It's TRUE!");
}
上面的代码都没有任何问题,两种形式可以按个人喜好任选一种。但如果函数的返回值是一个对象,就要小心了:// warning: unexpected return value
function func() {
return
{
name: "Batman"
};
}
如果你期望上面的代码能返回一个对象,那结果可能会出乎意料。因为上面的函数返回的是undefined。因为没有加分号的return对于JavaScript解释器来说看起来是这样的:// warning: unexpected return value
function func() {
return undefined;
// unreachable code follows...
{
name: "Batman"
};
}
所以,我们应该总是把第一个花括号放到上一行的结束处:
function func() {
return {
name: "Batman"
};
}
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 () {};
总之,空格应该让代码能呼吸:
// generous and consistent spacing
// makes the code easier to read
// allowing it to "breathe"
var d = 0,
a = b + 1;
if (a && b && c) {
d = a % c;
a += d;
} // antipattern
// missing or inconsistent spaces
// make the code confusing
var d= 0,
a =b+1;
if (a&& b&&c) {
d=a %c;
a+= d;
}
5. 构造函数的函数名要大写首字母
JavaScript没有“类”的概念,但可以声名能用new调用的构造函数:
var adam = new Person();
这种构造函数不象Java或C,要放在类的定义中,因此它和其它的函数看起来是一样的。要区分构造函数,可以把函数名的首字母大写:function MyConstructor() {...}
function myFunction() {...}
后面我们还会介绍如何让一个函数用起来时表现得像个构造函数(而不是一般函数)。但通过首字母大写,可以有效区别它们。
6. 区分标识符中的单词
对于函数名中的单词,应该用驼峰式(camel case)的大小写。如:myFunction(),calculateArea() 以及 getFirstName()。
对于变量,或是对象的属性,则应该用下划线的形式:如:first_name, favorite_bands, old_company_name。
对于常量,应该用全大写的形式:
// precious constants, please don't touch
var PI = 3.14,
MAX_WIDTH = 800;
对于对象中的私有属性和方法,则在它们前面加上下划线:
var person = {
getName: function () {
return this._getFirst() + ' ' + this._getLast();
},
_getFirst: function () {
// ...
},
_getLast: function () {
// ...
}
在上面的代码中,getName没有加下划线,意思是public的方法,而加了下划线的_getFirst和_getLast则是私有的方法。
JavaScript基础JavaScript的常用编码惯例(007)的更多相关文章
- JavaScript基础进阶之常用字符串方法总结
前面三篇文章简单的把JavaScript基础内容过了一遍,我们已经可以用JavaScript写一些简单的代码了. 今天主要总结一下JavaScript中String对象中自带的一些方法,来帮助我们处理 ...
- JavaScript基础——JavaScript语法基础(笔记)
JavaScript语法基础(笔记) 1.语言编码 JavaScript语言建立在Unicode字符集基础之上,因此脚本中,用户可以使用双字节的字符命名常量.变量或函数等. [示例] var 我=&q ...
- (译文)JavaScript基础——JavaScript中的深拷贝
在JavaScript中如何拷贝一个对象? 通过引用调用 function mutate(obj) { obj.a = true; } const obj = {a: false}; mutate(o ...
- JavaScript基础——JavaScript函数(笔记)
avaScript 函数(笔记) JavaScript 是函数式编程语言,在JavaScript脚本中可以随处看到函数,函数构成了JavaScript源代码的主体. 一.定义函数 定义函数的方法有两种 ...
- JavaScript基础——JavaScript数据类型(笔记)
数据类型(笔记) null和undefined 在JavaScript中有两个特殊的值: null和undefined.简单说明如下: null 是Null类型的值,Null类型的值只有一个值(nul ...
- JavaScript基础——JavaScript常量和变量(笔记)
JavaScript常量和变量(笔记) Javascript代码严格区分大小写. javascript暂不支持constant关键字,不允许用户自定义常量. javascript使用var关键字声明变 ...
- JavaScript基础——JavaScript入门(笔记)
JavaScript入门(笔记) JavaScript是一种轻量级.解释型的Web开发语言,该语言系统不是很庞杂,简单易学.由于所有现代浏览器都已嵌入JavaScript引擎,JavaScript源代 ...
- JavaScript基础Javascript中的循环(003)
1.普通循环JavaScript中一般的循环写法是这样的: // sub-optimal loop for (var i = 0; i < myarray.length; i++) { // d ...
- JavaScript基础------JavaScript语法
js的注释与分号 // 单行注释 /**/多行注释 ctrl +shift +/ 语句结束使用分号,如果省略,则由解析器确定语句的结尾js语法 1.变量.函数名.操作符都区分大小写 2.标识符 (1) ...
随机推荐
- JavaSE(二) 关键字、标识符、注释
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1关键字与标识符 1.1 java关键字的使用 定义:被Java语言赋予了特殊含义,用做专门用途的字符串 ...
- 使用turtle库画太极图
from turtle import * pensize(3) penup() pencolor("black") reset() speed(10) pendown() circ ...
- Java实现 蓝桥杯 算法训练 Balloons in a Box
试题 算法训练 Balloons in a Box 问题描述 你要写一个程序,使得能够模拟在长方体的盒子里放置球形的气球. 接下来是模拟的方案.假设你已知一个长方体的盒子和一个点集.每一个点代表一个可 ...
- Java实现蓝桥杯历届试题分考场
历届试题 分考场 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 n个人参加某项特殊考试. 为了公平,要求任何两个认识的人不能分在同一个考场. 求是少需要分几个考场才能满足条件. 输 ...
- Java实现 LeetCode 506 相对名次
506. 相对名次 给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌.前三名运动员将会被分别授予 "金牌","银牌" 和" 铜牌&q ...
- Java实现 蓝桥杯 算法提高 P0101
算法提高 P0101 时间限制:1.0s 内存限制:256.0MB 提交此题 一个水分子的质量是3.0*10-23克,一夸脱水的质量是950克.写一个程序输入水的夸脱数n(0 <= n &l ...
- Java实现 LeetCode 447 回旋镖的数量
447. 回旋镖的数量 给定平面上 n 对不同的点,"回旋镖" 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺 ...
- Java实现 LeetCode 133 克隆图
133. 克隆图 给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆). 图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node]). class Node { ...
- java实现第七届蓝桥杯碱基
碱基 题目描述 生物学家正在对n个物种进行研究. 其中第i个物种的DNA序列为s[i],其中的第j个碱基为s[i][j],碱基一定是A.T.G.C之一. 生物学家想找到这些生物中一部分生物的一些共性, ...
- Java实现第八届蓝桥杯分巧克力
分巧克力 题目描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需要从这 N 块巧 ...