JS面试题二

一、闭包是什么有什么特性,对页面会有什么影响

1.概念:闭包可以简单理解成“定义在一个函数内部的函数“。当其中一个内部函数在包含它们的外部函数之外被调用时,就会形成闭包。

2.特点:

函数嵌套函数。

函数内部可以引用外部的参数和变量。

参数和变量不会被垃圾回收机制回收。

3.用处:

常驻内存会增大内存的使用量;

读取函数内部的变量;

这些变量的值始终保持在内存中,不会在外层函数调用后被自动清除。

4.优点:

变量长期驻扎在内存中;

避免全局变量的污染;

私有化变量;

5.缺点:会造成内存泄露

二、深浅拷贝是什么,如何实现?

首先浅拷贝和深拷贝只针对引用类型。

浅拷贝:浅拷贝只复制某个对象的引用,而不复制对象本身,新旧对象还是共享同一块内存

深拷贝:指拷贝对象的具体内容,拷贝结束之后俩个对象虽然存的值是一样的,但是内存地址不一样,俩个对象页互相不影响,互不干涉。

浅拷贝的实现方式:1. 扩展运算符 2. 单层for循环 3. 数组中还可以使用 arr.slice(0), arr.concat(),来实现浅拷贝

深拷贝的实现方式:

1. 通过循环+递归实现深拷贝

2. 通过JSON.stringify()实现

三、Js 中 null 与 undefined 区别

相同点:if 判断语句中,两者都会被转换为 false

不同点:Number 转换的值不同,Number(null)输出为 0, Number(undefined) 输出为NaN

null 表示一个值被定义了,但是这个值是空值

undefined 表示缺少值,即此处应该有值,但是还没有定义

四、map 和 forEach 的相同点和不同点

相同点:都是循环遍历数组中的每一项

forEach 和 map 方法里每次执行匿名函数都支持 3 个参数,参数分别是item(当前每一项)、index(索引值)、arr(原数组) 匿名函数中的 this 都是指向 window 只能遍历数组

不同点:forEach()没有返回值,map() 有返回值,返回出映射后的新的数组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值