2022年前端面试题加答案

1、javascript基本数据类型?
string、number、null、underfined、boolean
object是所有对象的父对象。

2、浅谈javascript中变量和函数声明的提升?
变量和函数声明的提升会被提升到最顶部去执行;
函数的提升高于变量的提升;
如果在函数内部用var声明了与外部相同的变量,则不向下寻找;
匿名函数不会被提升;
不同块中互不影响。

3、什么是闭包?闭包有什么特性?
闭包就是能够读取其他函数内部变量的函数。
闭包的特性:
函数内部可以嵌套函数;
内部函数可以直接访问外部函数的参数和变量;
参数和变量不会被垃圾回收机制回收。

4、说说对比包的理解和闭包的作用?
使用闭包就是为了设置私有变量和方法。
闭包的好处:能够实现封装和缓存;
闭包的坏处:就是内存消耗,使用不当可能会造成内存溢出的问题。

5、说说this对象的理解?
this总是指向直接调用者;
如果有new关键字,则指向new出来的那个对象;
在事件中,this指向触发这个事件的对象,特殊的是,在IE中的attachEvent中的this总是指向全局对象 window。

6、事件模型的理解?
冒泡型事件:当使用冒泡型事件时,子级元素先触发,父级元素后触发。
捕获型事件:当使用捕获型事件时,父级元素先触发,子级元素后触发。

7、new操作符具体做了干了什么?
创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型;
属性和方法被加入到this引用的对象中;
新创建的对象由this所引用,并且最后隐式地返回this。

8、说说堆和栈的区别?
栈内存:存储的都是局部变量,后进先出,栈内存的更新速度很快,因为局部变量的声明周期都很短。
堆内存:存储的都是数组和对象,堆里面的实体不会被释放,但是会被当成垃圾,java有垃圾回收机制不定时地收取。

9、JS数组和对象的遍历方式,以及几种方式的比较。
for循环——循环每进行一次,就要检查一下数组的长度,速度比较慢;
for in 循环——需要分析出array的每一个属性,这个操作性能开销很大。
forEach循环——不能遍历对象,不可以使用continue、break跳出循环,且使用return是跳出本次循环。

10、map与forEach的区别?
forEach是最基本的循环,默认有三个参数:array、item、index;
map的用法和forEach基本一致,不同的是它会返回一个数组,所以callback需要有return值,如果没有,会返回underfined。

11、说说箭头函数与普通函数的区别?
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象;
不可以当作构造函数,也就是说不能使用new关键在,否者会抛出一个错误;
不可以使用arguments对象,该对象在函数体内不存在。如果要使用,可以用Rest参数代替;
不可以使用yield命令,因此箭头函数不能当作Generator函数。

12、javascript定义类的四种方法
工厂方法、构造函数方法、原型方法、组合使用构造函

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值