25Js面试题

118 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情

一、面试题一-变量和函数声明的提升

  • 预解析阶段,js中函数声明和var声明的变量会提升到函数最顶部执行
  • 优先级:函数声明的提升高于变量声明的提升
  • 函数内部如果用var声明相同名称的外部变量,当在函数查找该变量是,不会在向上查找
  • 匿名函数不会提升

二、面试题二-闭包

  • 闭包就是能够读取其他函数内部变量的函数
  • 优点:可以读取函数内部的变量、将变量始终保存在内存中、可以封装对象的私有属性和私有方法
  • 缺点:耗费内存,使用不当容易造成内存溢出的问题

三、面试题三-this

  • this总是指向函数的直接调用者
  • 如果使用new关键字,this指向new出来的对象
  • 在响应事件中,this指向触发这个事件的对象

四、面试题四-map与forEach的区别

  • forEach方法就是循环遍历方法,默认有三个参数:遍历的数组的内容item,数组索引index,当前遍历的数组array
  • map方法的基本用法与forEach一致,但它会返回一个新数组,所以它的回调函数要有返回值,如果没有就会返回undefined

五、面试题五-箭头函数

  • 箭头函数体内的this对象指向定义是所在的对象,而不是使用时所调用的对象(普通函数)
  • 不可以作为构造函数,即不可以使用new命令,否则会报错
  • 箭头函数体内不存在arguments对象,它体内类似的对象是Rest
  • 箭头函数不能作为Generator函数,即不能使用yield命令