编写可维护的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");
编写可维护的JavaScript—语句和表达式&变量、函数和运算符的更多相关文章
- 读《编写可维护的JavaScript》第四章总结
第四章 变量 函数和运算符 4.1 ① 变量声明 变量声明是通过var语句来完成的,并且所有的var语句都提前到包含这段逻辑的函数的顶部执行. function doSomething() { + v ...
- 《编写可维护的JavaScript》之编程实践
最近读完<编写可维护的JavaScript>,让我受益匪浅,它指明了编码过程中,需要注意的方方面面,在团队协作中特别有用,可维护性是一个非常大的话题,这本书是一个不错的起点. 本书虽短,却 ...
- 《编写可维护的javascript》读书笔记(中)——编程实践
上篇读书笔记系列之:<编写可维护的javascript>读书笔记(上) 上篇说的是编程风格,记录的都是最重要的点,不讲废话,写的比较简洁,而本篇将加入一些实例,因为那样比较容易说明问题. ...
- 编写可维护的Javascript读书笔记
写在前面:之前硬着头皮参加了java方面的编程规范培训,收货良多,工作半年有余的时候,总算感觉到一丝丝Coding之美,以及造轮子的乐趣,以至于后面开发新功能的时候,在Coding style方面花了 ...
- 《编写可维护的javascript》读书笔记(上)
最近在读<编写可维护的javascript>这本书,为了加深记忆,简单做个笔记,同时也让没有读过的同学有一个大概的了解. 一.编程风格 程序是写给人读的,所以一个团队的编程风格要保持一致. ...
- 编写可维护的JavaScript 收纳架
如果你看过Nicolas C.Zakas写过的任何作品,你必须承认他是个不折不扣的天才.也只有天才级的才能写出<JavaScript高级程序设计>让所有的前端攻城师人手一本.Nicolas ...
- 编写可维护的JavaScript之编程风格
在团队中只有每个人的编程风格一致,大家才能方便的互相看懂和维护对方的代码. 1. 层级缩进 对于层级缩进目前有两种主张:1)使用制表符这种方法有两种好处,第一,制表符和缩进层级之间是一一对应关系,符合 ...
- 编写可维护的JavaScript代码(部分)
平时使用的时VS来进行代码的书写,VS会自动的将代码格式化,所有写了这么久的JS代码,也没有注意到这些点.看了<编写可维护的javascript代码>之后,做了些笔记. var resul ...
- 拯救一切强迫症 - 读《编写可维护的 JavaScript》(一)
拯救一切强迫症 - 读<编写可维护的 JavaScript>(一) 本文写于 2020 年 4 月 24 日 我在小学的时候就有接触过编程,所以读大一的时候 C 语言还算是轻车熟路.自然会 ...
随机推荐
- 解决Thinkpad E450 外接显示器后没有声音的问题
昨天把公司配的ThinkPad E450 带回来了,今天用的时候一切正常没什么问题. 因为要看边看视频边做点别的,我就外接一台显示器,说出来我的这台显示器,你们绝对想不到是什么 显示器.我的这台显示器 ...
- Java I/O theory in system level
参考文章: JAVA NIO之浅谈内存映射文件原理与DirectMemory Java NIO 2.0 : Memory-Mapped Files | MappedByteBuffer Tutoria ...
- ngCookies模块
Angular中ngCookies模块介绍 1.Cookie介绍 Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie.内存Cookie由浏览器维护,保存在 ...
- python基础学习笔记5--对象方法、属性和迭代器
对象方法.属性和迭代器 1.构造方法 1)构造方法和一般方法的不同点:当一个对象被创建后,会立即调用构造方法. 2)在Python中创建一个构造方法很容易,只要把init方法的名字从简单的init修改 ...
- 深信服模式(先做减法,必须拜访客户三次、研究需求方向,把产品的问题控制住,快速反应,在未来十年,绝大部分业务都会搬到Internet上来,实现All on Internet)good
深圳市盛凯信息科技有限公司与深信服合作多年,可以说是看着深信服“飞速”长大的.盛凯的总经理邓渊在采访中笑言:“他们(深信服)发展得太快,而我们发展得太慢.” 深信服的产品线已从最初只有VPN一条,到目 ...
- linux环境变量配置总结
LD_LIBRARY_PATH: 动态库的查找路径设置:方法一: export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/XXX 但是登出后就失效方法二: 修改~/.bash ...
- Android 流媒体系列(二)
import java.io.IOException; import android.app.Activity; import android.content.ContentResolver; imp ...
- Michael Kors成了时尚行业的公敌-股票频道-和讯网
Michael Kors成了时尚行业的公敌-股票频道-和讯网 Michael Kors成了时尚行业的公敌 字号 评论 邮件 纠错 2014年03月03日17:32 来源:财经天下 全球消费不 ...
- UVA122-Trees on the level(链二叉树)
Trees on the level Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu Sub ...
- 一个关于Integer的秘密
先让大家看一段简单的代码: public static voidmain(String[] args) { Integera = 1; Integerb = 1; Integerc = 222; In ...