前言
ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
变量声明的扩展:let和const
- var 的问题
- 可以重复声明,没有报错和警告
- 无法限制修改
- 没有块级作用域,出了块依然能够使用
{ }
- let 和 const
- 不能重复声明
- 都是块级作用域,
{ }
块内声明的,块外无效 - let 是变量,可以修改
- const 是常量,不能修改
- 块级作用域举例
- 原来用 var 的方式,声明的变量出了块依然可以使用
- 或者将变量 封装到函数里,限制作用域,但比较麻烦
- 用 let 最简单,直接 var 改 let,解决作用域问题
变量初始化的改变:解构赋值
解构赋值
- 左右两边结构要一致
- 右边必须是合法的JS对象
- 声明和赋值不能分开,必须在一条语句中
函数扩展:默认值、作用域变更、剩余参数、箭头函数、尾调用优化
默认值
作用域变更
剩余参数(…)
Lambda 箭头函数
箭头函数,就是函数的简写
- 如果只有一个参数,
()
可以省 - 如果只有一个
return
,{}
可以省
尾调用优化
function fibonacci (n) {
if ( n <= 1 ) {return 1};
return fibonacci(n - 1) + fibonacci(n - 2);
}
Fibonacci(10) // 89
Fibonacci(100) // 超时
Fibonacci(500) // 超时
function fibonacci2 (n , ac1 = 1 , ac2 = 1) {
if( n <= 1 ) {return ac2};
return fibonacci2 (n - 1, ac2, ac1 + ac2);
}