箭头函数
箭头函数是JavaScript ES6引入的一种新的定义和编写函数的方法,虽然它看起来像是常规函数的语法糖,但是它与普通的函数有一个关键的不同之处,那就是this(上下文)的绑定不同。需要理解的就是:箭头函数是没有自己的this指向的,因此它本身的指向就根据它当前所在的上下文有关。
事件监听函数
在web开发中如果要给某个元素添加事件,都会用到addEventListener,例子如下:
使用 被遍历的数组.forEach() 来遍历元素的节点,并将监听的这个点击事件对象作为click事件的回调函数,方便点击元素状态中进行切换。这里我们使用的是普通函数,所以函数的回调中this的指向就是当前的上下文,即点击元素的本身。
箭头函数作为回调函数
前面介绍了箭头函数本身是没有this指向的,如果我们把上面的代码中的普通函数换成箭头函数,会发生什么呢? 箭头函数的上下文指向的是当前的全局对象,在这个例子中就会指向window。 代码如下:
当元素被点击时,会去改变元素的样式,全局window对象中没有修改样式的属性,所以会报错。