Skip to content

Javascript 风格指南

simplexcspp edited this page Aug 25, 2019 · 18 revisions

1.类型Types

  • 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
      • 装箱转换
  • 1.2引用类型
    • object
    • array
    • function

2.变量声明References

  • 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.对象

  • 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

4.数组

Clone this wiki locally