- A+
基本的格式化
第一章 基本的格式化
缩进层级
-
制表符缩进
优点:
制表符和缩进层级之间是一对一的关系
文本编辑器可以配置制表符的展现长度(通常是一个制表符长度相当于4个字符)
缺点:
系统对制表符的解释不一致,导致代码展现不统一
-
空格缩进
一般有三种 2 / 4 / 8
一般推荐为 4
语句结尾
- 语句一定要以
;
结尾,不要依赖ASI(Automatic Semicolon Insertion)
自动插入分号
行的长度
- 推荐长度不超过80个字符
换行
-
在运算符后换行(当有一个运算符在行尾的话,
ASI
就不会自动插入;
) -
第二行追加
4 / 2
个缩进(缩进为4)
// 好的做法 say("测试一下个",element , window, "some string value", 123)
这里的
,
也是运算符,应该在前一行的行尾
规则例外
当给变量赋值时,第二行的位置应当和赋值运算符位置保持对齐
var result = something + otherInfo + '这个晒撒很啊是激动啊' + '睡觉啊快点撒啊大姐' + someResult
命名
计算机科学只存在两个难题:缓存失效和命名 ----Phil Karlton
-
小驼峰式大小写命名法(首字母小写, 后面每个单词首字母大写)
-
匈牙利命名法(名字之前冠以类型标识符前缀),2000年盛行, 现在已经少见了
sName: s(String) + Name(变量意思)
iCount: i(Integer) + Count(变量意思)
变量与函数
-
变量名
以名词
作为前缀,可以和函数作为区分 -
函数名
以动词
作为前缀 -
尽量短,并抓住要点
常用的约定
动词 | 含义 |
---|---|
can | 函数返回一个布尔值 |
has | 函数返回一个布尔值 |
is | 函数返回一个布尔值 |
get | 函数返回一个非布尔值 |
set | 函数用来保存一个值 |
常量
- 大写字母 + 下划线(
MAX_COUNT
)
构造函数
- 大驼峰式大小写命名法(每个单词首字母大写)
直接量
JavaScript中包含一些类型的原始值:字符串, 数字, 布尔值, null, undefined.同样还包含数组自接量和对象直接量
字符串
//合法 var name = "say "hello""; //合法 var name = 'say "hello"';
字符串换行
-
不推荐的写法
var longString = "我哇就懂啊啥决定洒进你说地啊几哦的觉 送到家奇偶的撒娇哦多少级哦啊家的 啊圣诞节哦俺家大宋 撒娇哦多久哦"
-
推荐的写法
var longString = "我哇就懂啊啥决定洒进你说地啊几哦的觉 送到家奇偶的撒娇哦多少级哦啊家的" + "啊圣诞节哦俺家大宋 撒娇哦多久哦"
-
新的写法,模板字符串(还可以使用
${}
插入变量)var longString = `我哇就懂啊啥决定洒进你说地啊几哦的觉 送到家奇偶的撒娇哦多少级哦啊家的id还得hi 多 啊圣诞节哦俺家大宋 撒娇哦多久哦`;
数字
// 整数写法 var count = 10; // 小数 var price = 10.0; var price = 10.00; // 不推荐的小数写法: 没有小数部分 var price = 10; // 不推荐的小数写法: 没有整数部分 var price = .1; // 不推荐的写法: 八进制写法已经被弃用了 var num = 010; // 十六进制 var num = 0xA2; // 科学计数法 var num = 1e23
null
null 是一个特殊值,但是我们常常误解它, 将它和undefined搞混.
下面的这些场景中我们应当使用null
- 用来初始化一个变量, 这个变量可能赋值给一个对象
- 用来和一个已经初始化的变量比较, 这个变量可以是也可以不是一个对象
- 当函数的参数期望是对象时, 用作参数传入
- 当函数返回值期望是对象时,用作返回值传出
下面的这些场景中我们不应当使用null
- 不要使用null来检测是否传入了某个参数
- 不要用null来检测一个未初始化的变量
理解null最好的方式将它当做对象的占位符(placeholder)
undefined
undefined是一个特殊值,我们常常将它和null搞混.其中一个颇为让人困惑之处在于null == undifined结果为true.然而这两个值的用途却各有不同.那些没有被初始化的变量都有一个初始值,即undefined,表示这个变量等待被赋值
// 不好的写法 var person; console.log(person === undefined) // true // 好的做法 var person = null; console.log(person === null) // true
对象直接量
// 不好的写法 var book = new Object(); book.title = "测试"; book.author = "韩梅梅"; // 好的写法 var book = { title : "测试", author: "韩梅梅" }
数组直接量
// 不好得写法 var book = new Array(1,2,3,4,5); // 好的写法 var book = [1,2,3,4,5];