1. 块级作用域

  • let 取代 var —— let 只在声明的代码块内有效,而且不存在变量提升的效用
  • const 取代 let —— const 比较符合函数式编程的思想,运算不改变值,只是新建值;JS 编译器会对 const 进行优化,使用 const 有利于提高程序的运行效率
  • 所有的函数都应该设置成为常量
const [a, b, c] = [, , ]

2. 字符串
静态字符串使用单引号或者反引号,动态字符串使用反引号配合 ${ }

const a = 'Monica'
const b = `${a} is my good friend`

3. 解构赋值
使用数组成员对变量赋值时

cosnt [a, b] = [, , , ]

函数的参数是对象的成员

const getInfo = (info) => {
const { name, age } = info
}
const getInfo = ({ name, age }) => {
// ...
}

4. 对象
单行定义的对象,最后一个成员不以逗号结尾。多行定义的对象,最后一个成员以逗号结尾。

const a = { k1: v1, k2: v2 }
const b = {
k1: v1,
k2: v2,
}

对象尽量静态化,一旦定义,就不得随意添加新的属性。如果添加属性不可避免,要使用 Object.assign() 方法。

const info = {}
Object.assign(info, { name: 'wangxi' })

对象的属性和方法,尽量采用简洁表达法,这样易于描述和书写。

const userInfo = {
name,
gender: 'male',
getAge () {
return ''
},
}

5. 数组
使用扩展运算符(...)拷贝数组。

const a = [, , , ]
const b = [...a]

使用 Array.form() 将类数组对象转化为数组。

const infoObj = { name: 'wangxi', age: , length:  }
const infoArr = Array.from(infoObj)

6. 函数

立即执行函数写成箭头函数的形式。

(() => {
console.log('I am the best')
})()

使用默认值语法设置函数参数的默认值。

const userInfo = (name = 'wangxi') => {
// ...
}

7. Map 解构
只有模拟现实世界的实体对象时,才使用Object。如果只是需要key: value的数据结构,使用Map结构。

let map = new Map(arr)

Map 方法

  • map.keys()
  • map.values()
  • map.entries()

8. 模块
模块导入使用 import 代替 require
模块导出使用 export 代替 module.export。

如果模块只有一个输出值,就使用 export default,如果模块有多个输出值,就不使用 export default

如果模块默认输出一个函数,函数名的首字母应该小写。

const userInfo = () => {
// ...
}
export userInfo const UserInfo = {
// ...
}
export default UserInfo

参考: http://es6.ruanyifeng.com/#docs/style

最新文章

  1. andrioid 分享到其它(短信,qq,微信等功能)
  2. 使用XML文件记录操作日志,并从后往前读取操作日志并在richTextBox1控件中显示出来
  3. js闭包问题
  4. Android破解之Lic文件加密程序(首例)
  5. 【HDOJ】1242 Rescue
  6. JAVA-线程安全性
  7. Initializer block.
  8. 实现最小宽度的几种方法及CSS Expression[转]
  9. NYOJ 299
  10. MongoDB基础教程系列--第七篇 MongoDB 聚合管道
  11. android判断网络是否可用
  12. 【Visual C++】游戏编程学习笔记之九:回合制游戏demo(剑侠客VS巡游天神)
  13. kettle中文乱码问题
  14. OpenLayers学习笔记(三)— QML与HTML通信之 地图上点击添加自由文本
  15. The Minimum Cycle Mean in a Digraph 《有向图中的最小平均权值回路》 Karp
  16. 安装MySQL和其他包
  17. Python3-RabbitMQ 3.7.2学习——环境搭建(一)
  18. NYOJ 1016 判断两线段是否相交
  19. Java(C#)基础差异-语法
  20. Java网络编程和NIO详解开篇:Java网络编程基础

热门文章

  1. Yearning和inception搭建MySQL审核平台
  2. js获取浏览器内容宽高(小计)
  3. MFC随笔记录——1
  4. Lambda方式左连接有Linq方式左连接
  5. .NET中调用不安全代码
  6. 位运算 & 网络序字节序
  7. Qt irrlicht(鬼火)3D引擎 摄像机旋转问题
  8. abs项目 - 战线拉的太长
  9. R6的压力测试
  10. angular2采用自定义指令(Directive)方式加载jquery插件