大厂最爱考的前端面试题js(一)

74 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情

1.什么是作用域?

答案:

ES5 中只存在两种作用域:全局作用域和函数作用域。 在 JavaScript 中,我们将作用域定义为一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套子作用域中根据标识符名称进行变量(变量名或者函数名)查找

2.new在执行时会做四件事情?

答案:

  1. 在内存中创建一个新的空对象

2.让this指向这个新的对象

3.执行构造函数里面的代码,给这个新的对象添加属性和方法

4.返回这个新的对象(所以构造函数里面不需要return)

 function myNew(Fun, ...args) {
    let newObj = {};//1.创建对象
    newObj.__proto__ = Fun.prototype;//2.把Parent的this指向target
    const res = Fun.apply(newObj, args);//3.执行parent的代码为target添加属性,如果构造函数有返回结果,则接收
    if (res instanceof Object)  return res;
    return newObj;
  }
  function Person(name) { this.name = name}
  var son = myNew(Person, 'xiaoxiao')
  
  var f = new Person('zhangsan');

3.构造函数与普通函数的区别?

答案:

1.构造函数就是普通函数, 但一般是首字母大写

2.调用方式不一样,普通函数直接调用,构造函数用new函数调用

3.构造函数会创建一个新对象,并将该新对象作为返回值返回,普通函数没有返回值

4.构造函数 的作用用于初始化一个对象,普通函数就是描述事物的行为

4.说说你对于闭包的理解 

闭包就是一个函数,一个可以访问另一个函数作用域中变量的函数。就是函数内部与函数外部连接起来的一座桥梁。 一个函数里面再套了一个函数可以形成闭包。

作用:

1.可以读取函数内部的变量

2.构造函数可以设置私有方法,变量

3.局部变量当全局变量使用,延长变量生命周期(避免了全局对象过于庞大,影响访问速度)

结束语

希望大家能够喜欢我的文章,我真的很用心在写,也希望通过文章认识更多志同道合的朋友。

最后伙伴们,如果喜欢我的可以给点一个小小的赞👍或者关注➕都是对我最大的支持。