读《编写可维护的JavaScript》第四章总结
第四章 变量 函数和运算符
4.1 ① 变量声明
变量声明是通过var语句来完成的,并且所有的var语句都提前到包含这段逻辑的函数的顶部执行。
function doSomething() {
var result = + value;
var value = ;
return result;
}
// 编译器理解为
function doSomething() {
var result; // 这里为undefined
var value; // 这里为undefined
result = +value;
value = ;
return result;
}
变量声明提前意味着:在函数内部任意地方定义变量和在函数顶部定义变量是完全一样的。因此,一种流行的风格是将所有变量声明放在函数的顶部而不是散落在各个角落,简言之,依照这种风格写出的代码逻辑和JavaScript引擎解析这段代码的习惯是一样的。
作者还进一步推荐单var语句,每个变量的初始化独占一行,赋值运算符应当对齐(个人觉得没必要- -,并且后面的事例代码的风格也没有遵守这条),对于那些没有初始值的变量来说,他们应当出现在var语句的尾部。
// 好的声明
function doSomethingWithItems(items) {
var value = ,
result = value + ,
i,
len;
for (i=, len=items.length; i < len; i++) {
doSomething(items[i]);
} }
4.2 ② 函数声明
总是先声明函数后使用,函数声明不应当出现在语句块之内。
// 不好的写法
doSomething(); function doSomething() {
alert("Hello world");
} // JS引擎理解为
function doSomething (){
alert("Hello world");
} doSomething();
// 不好的写法,明确禁止
if (condition) {
function doSomething() {
alert("Hi!");
}
} else {
function doSomething() {
alert("Yo!");
}
}
4.3 ③ 函数调用间隔
对于函数调用写法推荐的风格是,在函数名和左括号之间没有空格,这样做是为了将它和块语句(block statement)区分开来。
// 好的写法
doSomething(item); // 不好的写法: 看起来像一个块语句
doSomething (item); // 用来作对比的块语句
while (item) {
// 代码逻辑
}
4.4 ④ 立即调用的函数
立即调用的函数用一对圆括号包起来。
// 好的写法
var value = (function () { //函数体 return {
message: "Hi"
}
}());
4.5 ⑤ 严格模式
不推荐将"use strict"用在全局作用域中,因为这样会让文件中的所有代码都以严格模式解析,其他文件(非严格模式下的)代码很可能报错。
// 不好的写法
"use strict"
function doSomething () {
//代码
} // 好的写法
function doSomething () {
"use strict"
// 代码
}
4.6 ⑥ 相等
由于JavaScript具有强制类型转换机制(type coercion),JavaScript中的判断相等操作是很微妙的。对于某些运算来说,为了得到成功的结果,强制类型转换会驱使某种类型的变量自动转换成其他不同类型,这种情形往往会造成意想不到的结果。So,注意底下这句:
所有情形推荐使用===和!==
4.6.1 ⑦ eval
就一句话: 实在无它法时才用eval();
4.6.2 ⑧ 原始包装类型
JavaScript里有三种原始包装类型:String,Booleanl,Number。它的主要作用是:让原始值具有对象般的行为。
还是一句话:禁止使用原始包装类型。
// 不好的做法
var name = new String("Nicholas");
var author = new Boolean(true);
var count = new Number();
理由:开发者的思路常常会在对象和原始值之间跳来跳去,这样会增加出bug的概率,从而使开发者陷入困惑。你也没有理由自己手动创建这些对象。
读《编写可维护的JavaScript》第四章总结的更多相关文章
- 读《编写可维护的JavaScript》第一章总结
第一章 基本的格式化 1.4 ① 换行 当一行长度到达了单行最大的字符限制时,就需要手动将一行拆成俩行.通常我们会在运算符后换行,下一行会增加俩个层级的缩进. // 好的做法: 在运算符后换行,第二行 ...
- [已读]编写可维护的javascript
13年4月份出版,作者是大名鼎鼎的Zakas,他的另两本书<javascript高级程序设计>与<高性能javascript>你一定听过或者读过. 这本书重点讲了编码风格和编码 ...
- 【读书笔记】读《编写可维护的JavaScript》 - 编程实践(第二部分)
本书的第二个部分总结了有关编程实践相关的内容,每一个章节都非常不错,捡取了其中5个章节的内容.对大家组织高维护性的代码具有辅导作用. 5个章节如下—— 一.UI层的松耦合 二.避免使用全局变量 三.事 ...
- 拯救一切强迫症 - 读《编写可维护的 JavaScript》(一)
拯救一切强迫症 - 读<编写可维护的 JavaScript>(一) 本文写于 2020 年 4 月 24 日 我在小学的时候就有接触过编程,所以读大一的时候 C 语言还算是轻车熟路.自然会 ...
- 《编写可维护的javascript》读书笔记(中)——编程实践
上篇读书笔记系列之:<编写可维护的javascript>读书笔记(上) 上篇说的是编程风格,记录的都是最重要的点,不讲废话,写的比较简洁,而本篇将加入一些实例,因为那样比较容易说明问题. ...
- 《编写可维护的javascript》读书笔记(上)
最近在读<编写可维护的javascript>这本书,为了加深记忆,简单做个笔记,同时也让没有读过的同学有一个大概的了解. 一.编程风格 程序是写给人读的,所以一个团队的编程风格要保持一致. ...
- 编写可维护的JavaScript 收纳架
如果你看过Nicolas C.Zakas写过的任何作品,你必须承认他是个不折不扣的天才.也只有天才级的才能写出<JavaScript高级程序设计>让所有的前端攻城师人手一本.Nicolas ...
- 推荐一本好书:编写可维护的JavaScript(可下载)
目录 推荐一本好书:编写可维护的JavaScript(可下载) 书摘: 下载: 有些建议: 推荐一本好书:编写可维护的JavaScript(可下载) 书摘: 很多设计模式就是为了解决紧耦合的问题.如果 ...
- 《编写可维护的JavaScript》之编程实践
最近读完<编写可维护的JavaScript>,让我受益匪浅,它指明了编码过程中,需要注意的方方面面,在团队协作中特别有用,可维护性是一个非常大的话题,这本书是一个不错的起点. 本书虽短,却 ...
- 编写可维护的Javascript读书笔记
写在前面:之前硬着头皮参加了java方面的编程规范培训,收货良多,工作半年有余的时候,总算感觉到一丝丝Coding之美,以及造轮子的乐趣,以至于后面开发新功能的时候,在Coding style方面花了 ...
随机推荐
- android 中获取当前焦点所在屏幕中的位置 view.getLocationOnScreen(location)
final int[] location = new int[2]; view.getLocationOnScreen(location); final int[] location = new in ...
- javascript sandbox
用途 https://github.com/gf3/sandbox Can be used to execute untrusted code. Support for timeouts (e.g. ...
- jQuery工具方法
目录 常用工具方法 判断数据类型的方法 Ajax操作 $.ajax 简便写法 Ajax事件 返回值 JSONP 文件上传 参考链接 jQuery函数库提供了一个jQuery对象(简写为$),这个对象本 ...
- Java 获取两个日期之间的日期
1.前期需求,两个日期,我们叫他startDate和endDate,然后获取到两个日期之间的日期 /** * 获取两个日期之间的日期 * @param start 开始日期 * @param end ...
- Web 播放声音(AMR 、WAVE)
最近甚是苦闷,属于边学边做,跳进了很多坑,别提有多惨了,不过结果还是不错滴,纵观前后,一句话足以概括 “痛并快乐着” ~~~ ok,我少说废话,下面来总结下 Web 播放声音一些注意事项. 说到 We ...
- ios safari 标签发送到桌面自定义图标方法
iphone 修改safari 发送到桌面图标 试了几次,总结如下: 1.全屏方法 <meta name="viewport" content="width=dev ...
- apiCloud又拍云数据库操作经验
1.在数据库表中有个relation字段,表示一对多(对应其他表的多个记录),这个字段比较奇怪,因为实际上这个字段里并未保存实际值.而是保存在对应表的字段中.但是对应表显示出来并没有这个字段.导出数据 ...
- Hi, there!
Wish you a happy day~我们一起玩WEB前端!^ ^
- Weblogic AdminServer启动失败,<Security> <BEA-090870> <The realm "myrealm" failed to be loaded
服务器重装,环境配置正常,domain没有变动,启动AdminServer失败. AdminServer_log: <2016-9-29 上午09时43分12秒 GMT+08:00> &l ...
- 转:Log4j使用
转:https://my.oschina.net/kkrgwbj/blog/638780 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录. ...