title | date | tags |
---|---|---|
读书笔记:《编写可维护的JavaScript》--基本的格式化 |
2015-06-06 09:48:45 -0700 |
读书笔记 |
关于代码的缩进,有两种主张tab和空格。
一般来说,使用tab键比较方便,可以通过配置文件来进行配置,可长可短。
可是系统对制表符的解释不一致,在不同的系统中打开文件看到的不一样。
制表符(也叫制表位)的功能是在不使用表格的情况下在垂直方向按列对齐文本。比较常见的应用包括名单、简单列表等。也可以应用于制作页眉页脚等同一行有几个对齐位置的行。
空格在所有的系统中和编译器中的展现都一样
可是对于单个开发者,使用一个没有配置好的文本编辑器创建格式化代码的方式十分原始。
在做项目的时候,带队的老师要求我们手打4个空格,说这样就可以最大的避免产生的代码缩进不一致的问题了。
虽然JavaScript在没有分号的情况下也会判定合法,但是推荐使用分号,对于我个人,肯定用分号啊
我发现很多开发人员,尤其是新手们,更倾向于使用分号而不是省略它们。
没错说的就是我这种新手@(*_*)@
除了一行代码结束了要换行之外,行太长了也要换行啊。
当一行长度达到了单行最大字符数限制时,就需要手动将一行拆成两行。通常我们会在运算符后换行,下一行会增加两个层次的缩进。
下面就是正确的示范
callAFunction(document, element, window, "some string value", true, 123,
navigator);
通常来讲,代码看起来应当像一系列可读的段落,而不是一大段揉在一起的连续的文本。有时一段代码的语义和另一段代码不相关,这是就应该使用空行将他们分隔,确保语义有关联的代码展现在一起。
一般来说,在下面这些场景中添加空行是不错的主意。
-
在方法之间。
-
在方法中的局部变量(local variable)和第一条语句之间。
-
在多行或单行注释之前。
-
在方法内的逻辑片段之间插入空行,提高可读性。
“计算机科学只存在两个难题:缓存失效和命名。”——Phil Karlton
-
Pascal Case 大驼峰式大小写
-
Camel Case 小驼峰式大小写
-
匈牙利命名法
JavaScript语言的核心 ECMAScript,即是遵照了驼峰式大小写(Camel case)命名法。 它是由小写字母开始的,后续每个单词的首字母都大写。
至于具体的命名规范,确实有些复杂了,变量名前缀应该是名词,函数名前缀应当是动词,常量用大写字母和下划线来命名。
-
变量 var count = 10;
-
函数 function getName() { return myName; }
-
常量 MAX_COUNT = 10;
在JavaScript中包含一些类型的原始值:字符串、数字、布尔值、null和undefined。同样也包含对象直接量和数组直接量。
字符串双引号、单引号混合在一起使用要嵌套,如果不混合在一起的话,要进行转义。
var longString = "Here's a String 'abc'."
我们只需要关心,代码从头到尾只保持一种风格。
多行字符串的一种替换写法是,使用字符串连接符(+)将字符分成多份。
var longString = "Here's the story, of a man " +
"named Brady."
在JavaScript中的数字类型只有一种,因为所有的数字形式——整数和浮点数——都存储为相同的数据类型。
在下列场景中应使用null
- 用来初始化一个变量,这个变量可能赋值为一个对象。
var person = null;
-
用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象。
-
当函数的参数期望是对象时,用作参数传入。
-
当函数的返回值期望是对象时,用作返回值传出。
function getPerson() {
if(condition) {
return new Person("Nicholas");
}
else {
return null;
}
}
在下面的场景中不要使用null
-
不用使用null来检测是否传入了某个参数。
-
不要用null来检测一个未初始化的变量
//不好的用法:用来和未初始化的变量比较
var person = null;
if(person != null =) {
dosomething();
}
//不好的用法:检测是否传入参数
function doSometing(arg1, arg2, arg3, arg4) {
if(arg4 != null) {
doSomethingElse();
}
}
undefined 是个特殊值,我们常常将它和null搞混。其中一个让人颇感困惑之处在于null == undefined 结果是true。
那些没有被初始化的变量都有一个初始值,即undefined,表示这个变量等待被赋值。
创建对象最流行的一种方法是使用对象直接量,然后在直接量中直接写出所有属性。
//不好的写法
var book = new Object();
book.tittle : "Maintainable JavaScript";
book.author : "Nicholas C. Zakas";
//好的写法
var book = {
tittle : "Maintainable JavaScript",
author : "Nicholas C. Zakas"
};
和对象直接量类似,数组直接量是JavaScript中定义数组最简洁的一种方式。不赞成显式的使用Array构造函数来创建数组。
//不好的写法
var colors = new Array("red", "green", "blue");
var numbers = new Array(1, 2, 3, 4);
//好的写法
var colors = ["red", "green", "blue"];
var numbers = [1, 2, 3, 4];