前端面试每日十题【多方面总结】,杜绝炫技

有些文章有一些面试题,炫技总结,很不适合我这样没什么工作经验的人,下面是我自己总结的,比较容易理解,适合像我一样刚开始找工作的人

1、什么是commonJS?

commonJs是js语言的模块化规范,它通常在服务器nodeJS上使用。项目是由多个模块组成的,模块和模块之间的调用,需要各个模块有相同规范的API,

2、闭包

  闭包:可读取其它函数内部变量的函数

  闭包产生的条件:1、在函数内部也有一个函数

                              2、函数内部的函数用到了外部函数的局部变量  

                              3、外部函数把内部函数作为返回值return出去了

  闭包的优缺点:

                           优点:变量可以长期存在、可以避免全局变量的污染

                           缺点:消耗内存、会在父函数外部改变内部变量值,比较耗费内存、使用不当会                                        造成内存溢出的问题

闭包和递归的区别

闭包和递归时函数中的两个比较特殊的情况,并且都被告诫人们要慎用。闭包相当于函数的返回值为另一个函数,而递归则相当于函数的参数为另一个函数。

3、内存溢出:

应用系统中存在无法回收的内存,或使用的内存过多,最终使得程序运行所需要的内存大于虚拟机提供的内存。

如何解决内存溢出?

及时释放不用的内存,避免死循环,减少使用闭包函数,减少不必要的全局变量

4、垃圾回收机制

有两种方法:标记清除法和引用计数法

标记清除法:垃圾回收器会在运行时候给内存中所有变量加上标记,然后去掉环境中的变量,以及被环境变量所引用的变量(闭包),在这些完成之后仍被标记的变量就是需要删除的变量,因为环境中的变量已经无法访问到这些变量了,然后垃圾回收器会把这些带有标记的

删除,收回所占内存

引用计数法:

当声明了一个变量并将一个引用类型赋值给该变量的时候,该值引用次数加一,如果该变量又取得另外一个值就减一,当引用次数为0的时候被回收

 垃圾回收机制什么时候被触发

垃圾回收机制的触发,总是在内存将近快满的时候,并会暂停正常代码的执行,等待回收完毕后,继续执行后续代码;垃圾回收规则,全局变量不回收,局部变量失去引用回收(未释放的闭包不做回收)。

5、js数据类型

基本数据类型: Number Null Boolean bigInt String Symbol  Undefined

BigInt可以表示任意大的整数 作用 解决精度缺失的问题:BigInt数据类型Number类型支持更大的整数值

“Symbol类型是 ES6 引入的一种数据类型,表示独一无二的值,JavaScript语言的第七种数据类型。

引用数据类型:object Array Date Function RegExp

基本数据类型寻处在栈中,引用数据类型存储在堆中

6、js变量和函数声明的提升

在js中变量和函数的声明会提升到最顶部执行

函数的提升高于变量的提升

函数内部如果用 var 声明了相同名称的外部变量,函数将不再向上寻找。匿名函数不会提升。

7、this

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

8、js数组和对象的遍历方式

    • for in
    • for
    • forEach
    • for-of

9、for  in  和for of 的区别

 

For of 是遍历的每一项值,

For   in  是遍历每一项的索引

10、map与forEach的区别

forEach 方法,是最基本的方法,就是遍历与循环,默认有 3 个传参:分别是遍历的数组内

容 item、数组索引 index、和当前遍历数组 Array

map 方法,基本用法与 forEach 一致,但是不同的,它会返回一个新的数组,所以 callback

需要有 return 值,如果没有,会返回 undefined

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值