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) ...
随机推荐
- Java实现k个数乘(cheng)(自然数的k乘积问题)
k个数乘(cheng) 题目描述 桐桐想把一个自然数N分解成K个大于l的自然数相乘的形式,要求这K个数按从小到大排列,而且除了第K个数之外,前面(K-l)个数是N分解出来的最小自然数.例如:N=24, ...
- Java实现 LeetCode 216. 组合总和 III(三)
216. 组合总和 III 找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. 说明: 所有数字都是正整数. 解集不能包含重复的组合. ...
- Java实现 LeetCode 82 删除排序链表中的重复元素 II(二)
82. 删除排序链表中的重复元素 II 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4- ...
- Java实现 洛谷 P1909 买铅笔
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(Strin ...
- iOS-自定义 UITabBarController
先来回顾一下UITabBarController ( 稍微详细的在在http://blog.csdn.net/yang198907/article/details/49807011) 伴随UITabB ...
- DevOps系列——Jenkins/Gitlab自动打包部署
前面只说了DevOps的两个基础组件Jenkins和GitLab,客官也不要着急,我们玩就玩的深入一点,Gitlab和Jenkins的各种配置和 插件很多,也够啃一阵子的,不要照着操作一通就感觉万事大 ...
- ArrayList、LinkedList、Vector、Array和HashMap、HashTable
就 ArrayList 与 Vector 主要从二方面来说. 一.同步性:Vector 是线程安全的,也就是说是同步的,而ArrayList 是线程序不安全的,不是同步的 二.数据增长:当需要增长时, ...
- SuperSlide之属性targetCell介绍
禁用页面菜单js代码: <script type="text/javascript"> document.oncontextmenu=function(){ retur ...
- 用Springboot干掉IBM的WAS-为公司省点钱
1 那一夜,你伤害了我 今夜的雨下得凉快,小南睡得正香,突然收到远洋运维小周的电话:Hello, Are you OK? WAS有issue,快起来help me! 只见小南登陆WAS机,查看了机器日 ...
- Shell语法规范
ver:1.0 博客:https://www.cnblogs.com/Rohn 本文介绍了Shell编程的一些语法规范,主要参考依据为谷歌的Shell语法风格. 目录 背景 使用哪一种Shell 什么 ...