ES6
- 我们所说的 ES5 和 ES6 其实就是在 js 语法的发展过程中的一个版本而已
- ECMAScript 就是 js 的语法
- 以前的版本没有某些功能
- 在 ES5 这个版本的时候增加了一些功能
- 在 ES6 这个版本的时候增加了一些功能
- 因为浏览器是浏览器厂商生产的
- ECMAScript 发布了新的功能以后,浏览器厂商需要让自己的浏览器支持这些功能
- 这个过程是需要时间的
- 所以到现在,基本上大部分浏览器都可以比较完善的支持了
- 只不过有些浏览器还是不能全部支持
- 这就出现了兼容性问题
- 所以我们写代码的时候就要考虑哪些方法是 ES5 或者 ES6 的,看看是不是浏览器都支持
1.ES6定义变量
let 和 const 关键字
1.let变量
2.const常量
-
我们以前都是使用
var关键字来声明变量的 -
在 ES6 的时候,多了两个关键字
let和const,也是用来声明变量的 -
只不过和 var 有一些区别
let 和 const 的相同点
1. let 和 const 不允许重复声明变量
2. let 和 const 声明的变量不会在预解析的时候解析(也就是没有变量提升)
3. let 和 const 声明的变量会被所有代码块限制作用范围
let 和 const 的区别
1. let 声明的变量的值可以改变,const 声明的变量的值不可以改变
2. let 声明的时候可以不赋值,const 声明的时候必须赋值
案例:块级作用域
原来var定义 用let定义
2.箭头函数
-
(只有一个形参的时候)可以省略
-
{} 可以省略 只有一句代码 或 只有返回值的时候,省略return
-
没有arguments 无法拿到arguments
-
箭头函数没有this, 箭头函数this是父级作用域的,不再是谁调用它就指向谁了
2-1 箭头函数语法
-
箭头函数是 ES6 里面一个简写函数的语法方式
-
重点: 箭头函数只能简写函数表达式,不能简写声明式函数
-
语法:
(函数的行参) => { 函数体内要执行的代码 }
2-2 箭头函数的特殊性
1. 函数的行参只有一个的时候可以不写 () 其余情况必须写
2. 函数体只有一行代码的时候,可以不写 {} ,并且会自动 return
3. 箭头函数内部没有 arguments 这个参数集合
4. 箭头函数内部没有 this,箭头函数的 this 是上下文的 this
- 按照我们之前的 this 指向来判断,两个都应该指向 obj
- 但是 fun 因为是箭头函数,所以 this 不指向 obj,而是指向 fun 的外层,就是 window
5. 函数传递参数的时候的默认值
-
我们在定义函数的时候,有的时候需要一个默认值出现
-
就是当我不传递参数的时候,使用默认值,传递参数了就使用传递的参数
function fn(a) { a = a || 10 console.log(a) } fn() // 不传递参数的时候,函数内部的 a 就是 10 fn(20) // 传递了参数 20 的时候,函数内部的 a 就是 20- 在 ES6 中我们可以直接把默认值写在函数的行参位置
function fn(a = 10) {}- 这个默认值的方式箭头函数也可以使用
const fn = (a = 10) => { console.log(a) }- 注意: 箭头函数如果你需要使用默认值的话,那么一个参数的时候也需要写 ()
3 解构赋值
- 解构赋值,就是快速的从对象或者数组中取出成员的一个语法方式
3-1 解构对象
- 快速的从对象中获取成员
3-2 解构数组
- 快速的从数组中获取成员
注意
{} 是专门解构对象使用的
[] 是专门解构数组使用的
- 不能混用
4. ES6的对象简写
可以省略:以及:后的
5. 展开运算符
- ES6 里面号新添加了一个运算符
...,叫做展开运算符
作用是把数组展开
let arr = [1, 2, 3, 4, 5]
console.log(...arr) // 1 2 3 4 5
合并数组的时候可以使用
let arr = [1, 2, 3, 4]
let arr2 = [...arr, 5]
console.log(arr2) //[1,2,3,4,5]
也可以合并对象使用
let obj = {
name: 'Jack',
age: 18
}
let obj2 = {
...obj,
gender: '男'
}
console.log(obj2)
在函数传递参数的时候也可以使用
let arr = [1, 2, 3]
function fn(a, b, c) {
console.log(a)
console.log(b)
console.log(c)
}
fn(...arr)
// 等价于 fn(1, 2, 3)
6.模版字符串
-
ES5 中我们表示字符串的时候使用
''或者"" -
在 ES6 中,我们还有一个东西可以表示字符串,就是 ``(反引号)
let str = `hello world` console.log(typeof str) // string -
和单引号还有双引号的区别
-
反引号可以换行书写
-
反引号可以直接在字符串里面拼接变量
- 在 `` 里面的
${}就是用来书写变量的位置
- 在 `` 里面的
-