-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcoding-style.html
More file actions
129 lines (109 loc) · 5.29 KB
/
coding-style.html
File metadata and controls
129 lines (109 loc) · 5.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE html>
<html>
<head>
<title>coding style</title>
</head>
<body>
<p>缩进层级:4个空格作为一个缩进层级</p>
<p>语句结尾:JS语句要以分号结尾</p>
<p>行的长度:推荐将行的长度限制在80个字符</p>
<p>
换行:
1.通常会在运算符后换行,下一行会增加两个层级缩进。
2.当变量赋值时,第二行的位置应当和赋值运算符的位置保持对齐。
空行: 1.方法之间。
2.在方法中的局部变量和第一条语句之间。
3.在多行或单行注释之前。
4.在方法内的逻辑片段之间插入空行,提高可读性。
命名: 变量:变量名应当总是遵守驼峰命名法,并且命名前缀应该是名词。
函数:函数名应当总是遵守驼峰命名法,并且命名前缀应该是名词。
常量:使用大写字母和下划线来命名,下划线用以分割单词。
构造函数:构造函数的命名遵照大驼峰命名法,命名前缀常常是名词。
直接量:字符串:1.单引号双引号均可,推荐使用双引号。
2.多行字符使用字符串连接符(+)将字符串分成多份。
数字: 1.不要省略小数点之前或者之后的数字。
2.禁止八进制直接量。
null: 应当使用null的场景: 1.初始化一个变量,这个变量可能被赋值成一个对象。
2.用来和一个已经初始化的变量比较,无论这个变量是否为一个对象。
3.当函数的参数期望是对象时,用作参数传入。
4.当函数的返回值期望是对象时,用作返回值传出。
不应当使用null的场景:1.不要使用null来检测是否传入了某个参数。
2.不要使用null看来检测一个未初始化的变量。
undefined:1.避免在代码中使用undefined,可以有效的确保只有在一种情况下typeof才会返回undefined:当变量未声明时。如果这样可以将变量赋值null。
2.当变量初始赋值为null,则表明这个变量最终很可能赋值为对象,typeof null返回"object",这样就可以和undefined区分开了。
对象直接量:避免使用构造函数创建对象。
单行注释:1.独占一行的注释用来解释下一行的代码。这行注释之前总是有一个空行,且缩进层级与下一行代码一致。
2.在代码行的尾部注释。代码结束到注释之间至少有一个缩进。注释(包括之前的代码部分)不应当超过单行最大字符限制,如果超过了,就将这条注释放置于当前代码行的上方。
3.被注释掉的大量代码 /*
多行注释:1.推荐JAVA风格的多行注释难于理解的代码 *
*/
使用注释:1.可能被误认为错误的代码
2.浏览器特性hack
文档注释:需要加注释的内容:1.所有的方法(应当对方法,期望的参数及可能的返回值添加注释描述)
2.所有的构造函数(应当对自定义类型和期望的参数添加注释描述)
3.所有包含文档化方法的对象(如果一个对象包含一个或多个附带文档注释的方法,那么对这个对象也应该适当的针对文档生成工具添加文档注释)
所有块语句都应当使用花括号
花括号对齐方式:
<script type="text/javascript">
if(condition){
do();
}else{
doElse();
}
if(condition)
{
do();
}
else
{
doElse();
}
</script>
块语句相隔
<script type="text/javascript">
if(condition){
do();
}
if (condition) {
do();
}
if ( condition ) {
do();
}
</script>
switch语句
<script type="text/javascript">
switch (condition) {
case "first":
break;
case "second":
break;
default:
}
//case语句连续执行
switch (condition) {
case "first":
case "second":
break;
default:
}
//从语法结构角度考虑,即使default中什么也不做,也不应当省略default
</script>
with语句:避免使用with语句,再严格模式下with语句是被明确禁止的,如果使用则报语法错误。
for循环:Crockford的编程规范不允许使用continue。他主张代码中与其使用continue不如使用条件语句。Crockford解释说这种方法对于开发者更容易理解而且不容易出错。
for-in循环:for-in循环是用来遍历对象属性的,避免用它来遍历数组。
所有的for-in循环都必须使用hasOwnProperty()方法过滤出实例属性。
变量声明:注意变量声明提升。
函数声明:1.函数声明不应该出现在语句块之内。
2.函数声明应该在条件语句的外部使用。
函数调用:函数名和左括号之间没有空格(do())。
立即调用函数:1.将函数用一对圆括号包裹起来。
2.'use strict',推荐使用严格模式,尽量不要在全局作用域中使用严格模式。
3.如果希望在多个函数中使用严格模式可以使用立即调用函数。
相等:==和!=比较会发生强制类型转换
推荐使用===和!==进行比较
尽量避免使用eval()函数
尽量避免使用原始包装类型创建对象
</p>
</body>
</html>