前几天看到掘金博客一篇文章,找到了这个JavaScript进阶问题列表:现在把地址贴出来,想找工作或者想要巩固自己JS的同学可以参考
该文档会不定时更新
一、箭头函数
箭头函数相当于匿名函数,并且简化了函数的定义。它最大的有点是解决了this执行环境造成的一些问题。最常见的就是在setTimeout和setInterval中使用this造成的问题
在“use strict” 严格模式下,没有直接的调用者的函数中this是指向window的,这个是约定俗成的。在“use strict”严格模式下,没有直接的挂载者的话,this指向是undefined;在非严格模式下,this指向的是函数的执行上下文
二、普通函数
普通函数,this是JS的一个关键词,它是函数执行过程中自动生成的一个内部对象,是指的当前对象,只在当前函数内部使用。
this对象是在运行时基于函数执行的环境来说的,在全局调用时,this指向window。当函数作为某个对象的方法被调用的时候,this指向这个对象
在上述的代码中,
const shape = { radius:10, diameter(){ return this.radius * 2 }, perimeter:()=>2*Math.PI * this.radius } shape.diameter() shape.perimeter()
函数diameter的值是一个常规函数,但是permeter的值是一个箭头函数;考点在于普通常规函数和箭头函数的区别
函数diameter中,this指向的是shape这个对象,所以shape.diameter()这个函数输出来的是20
函数perimeter中,this指向是window,在window中,没有radius这个变量,所以这个函数输出的是undefined
================================================================================================