真实面试中遇到的问题

93 阅读2分钟

真实面试中遇到的问题

近些日自出去面试出现了一些没有答出来的问题,于是写以此文,加深印象.

直接上问题吧,首先面试官问了我Es6的新语法:我回答的是 let const 箭头函数 promise async/await 结构赋值

其实完整为:

  • let
  • const
  • 箭头函数
  • 模板字符串
  • 结构赋值
  • promise
  • import和export
  • set方法
  • 展开运算符
  • async和await等

接来下面试官就顺着往下问了=>普通函数和箭头函数的区别 ===那我回答的是:普通函数的this指向与箭头函数的this指向不一致,普通函数this指向调用者,箭头函数的this指向与层函数作用域的this指向一致,如果没有就是指向window

完整回答为:

  • 箭头函数的this指向与外层作用域的函数指向一致,如果没有就指向window
  • 不能使用arguments对象
  • 不能使用够造函数,就是说不能使用new命令
  • 不可以使用yield命令,因此箭头函数不能用作Generator

面试官就顺着问,那普通函数的this指向怎么改,这里由于我没有准备好,就没有答出来

其实改变普通函数的this指向的方法有三种:bind call apply 都可以修改this指向

  • call 方法改变this指向

上面这段执行为:1659166745759

当小林想借用老王的的方法的时候代码为:

1659167190013

  • apply方法改变this指向

输出结果也是一致:1659167579172

  • bind方法改变this指向

当然输出结果也跟上面一致:1659172493560

-call-apply-bind-传递参数

接下来面试官问了简单说几个常用的数组语法,那我说出了set,map,forEach,当时还不知道自己已经掉坑里,其实set不属于数组语法,只是可以用于数组去重复,set其实是个对象,主要功能是用于去重处理,

1659182891592