es6语法
1.this的指向
2.修改this指向的方法
3.let和const关键字
4.箭头函数
5.函数参数默认值
6.模板字符串
7.解构赋值
8…展开运算符
9.对象的简写形式
10.es6模块化语法
1.this的指向【面试题】
`概念`: js内部提供的一个关键词。
`全局环境中的this`: window对象。因为什么呢?调用函数是:函数名(); 其实可以看成是 window.函数名()。也就是挂载到了window上自然指向window全局
`在普通函数中的this`:this取决于谁调用,谁调用我,this就指向谁,跟如何定义无关
`对象中方法的this`: 利用对象调用的函数,this指向对象本身
`定时器中的this`: window对象
`事件函数中的this`: 事件源
`箭头函数中的this`: 两种理解:
1. :该函数声明时所处的作用域
2. :箭头函数内没有自己的this,箭头函数内的this就是外部作用域的this。
换句话说,当你需要判断箭头函数内的this的时候,和函数怎么调用没有关系了,要看函数定义在什么位置
`构造函数中的this`:构造函数配合new使用, 而new关键字会将构造函数中的this指向实例化对象,所以构造函数中的this->实例化对象
'注意': 一般情况,this会指向函数的调用者
`经验一 :`
在js的非严格模式下适用:箭头函数除外
1. 函数的this,不管函数定义在哪里,不管函数怎么定义,只看函数的调用方式
只要我想知道this是谁
就看这个this是写在哪个函数里边
这个函数是怎么被调用的(只看父级函数被调用没,其他不管,父级没调用,自己调用那就指向window)
`经验二 :`
2. 严格模式下,全局函数没有 this,全局this是个 undefiend,其他照搬经验一 即可
严格模式:'use strict'
2.修改this指向的3种方法【面试题】
`call方法`:
1. 立即执行对应的函数
2. 第一个参数用来修改this指向, 不需要被接收
3. 可以设置多个参数,形参会依次错位的接收
`apply方法`:
1. 立即执行对应的函数
2. 第一个参数用来修改this指向, 不需要被接收
3. 只能设置两个参数,第2个参数必须是数组或者伪数组,形参会依次接收数组里面的每一数组元素
`bind方法`:
1. 不会立即执行对应的函数,而是返回一个修改了this指向的新函数
2. 第一个参数用来修改this指向, 不需要被接收
3. 可以设置多个参数,形参会依次错位的接收
# 面试题: call,apply和bind方法的区别?
3.let和const关键字
`概念`: es6语法提供的两个关键字,专门用来声明变量的。
3.0 let 和 const使用场景:
` let一般应用于基本数据类型;const 一般应用于引用数据类型,也就是函数对象等。`
3.1 var和let的区别【面试题】
var 和 let的区别:
1. var可以重复声明相同的变量,可能会造成程序问题; let不可以重复声明相同的变量
2. var声明的变量会挂载到window对象上,let声明的变量不会挂载到window对象上
3. var声明的变量只有全局和函数作用域,let声明的变量具有块级作用域,用'{}'表示块级作用域
4. var声明的变量支持