-
Notifications
You must be signed in to change notification settings - Fork 0
Javascript 风格指南
simplexcspp edited this page Aug 25, 2019
·
18 revisions
- 1.1基本类型
- string
- 装箱转换
- number
- typeof NaN => number
- NaN === NaN => false
- Number.isNaN()
- 0.1 + 0.2 === 0.3 => false
- 装箱转换
- boolean
- 装箱转换
- null
- typeof null => object
- undefined
- 非js关键字,取值使用void(0)代替
- symbol
- 装箱转换
- string
- 1.2引用类型
- object
- array
- function
- 2.1使用const代替var为主要变量声明方式,eslint规则:
prefer-const, no-const-assign, no-var
const num = 1
const arr = []
arr.push(123, 456)
- 2.2部分需重新分配引用的变量使用let声明
const end = 6
let num = 0
while(num < end) {
// your code
num++
}
- 2.3const, let声明变量存在块级作用域,且不会成为window属性(浏览器宿主环境)
{
let o1 = 1
const o2 = 2
}
console.log(o1) // ReferenceError
console.log(o2) // ReferenceError
const a = 1
let b = 2
console.log(window.a) // undefined
console.log(window.b) // undefined
- 2.4var声明变量为函数作用域,会成为window属性(浏览器宿主环境)
- 3.1使用对象字面量
{}方式声明对象,而非使用new Object()方式,eslint规则no-new-object - 3.2使用属性简洁表示法定义对象,简洁且描述性更好
const name = 'jack'
// bad
const obj = {
name: name,
getName: function (value) {
return obj.name + value
}
}
// good
const obj = {
name,
getName(value) {
return obj.name + value
}
}
- 3.3属性简洁表示法的属性应在对象字面量开头定义,便于区分
const name = 'jack'
const age = 18
// bad
const obj = {
id: 1,
name,
sex: 'male',
age
}
// good
const obj = {
name,
age,
sex: 'male',
id: 1
}
- 3.4使用属性名表达式表示对象变化的属性名,便于在字面量声明内定义对象所有属性
function getKey(k) {
return `_${k}`
}
// bad
const obj = {
name: 'jack',
age: 18
}
obj[getKey('id')] = 1
// good
const obj = {
[getKey('id')]: 1,
name: 'jack',
age: 18
}
- 3.5
- 3.6