js 闭包(面试题)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 闭包(面试题)相关的知识,希望对你有一定的参考价值。

参考技术A

1. 闭包的本质就是在一个函数内部创建另一个函数。

2

匿名函数作为fun的返回值被赋值给了f,
这时候相当于 f=function()var n = 0 … ,
并且匿名函数内部引用着fun里的变量num,所以变量num无法被销毁,
而变量n是每次被调用时新创建的,所以每次 f 执行完后它就把属于自己的变量连同自己一起销毁,
于是乎最后就剩下孤零零的num,于是这里就产生了内存消耗的问题

3. 定时器与闭包

最后总结一下闭包的好处与坏处
好处
①保护函数内的变量安全 ,实现封装,防止变量流入其他环境发生命名冲突
②在内存中维持一个变量,可以做缓存(但使用多了同时也是一项缺点,消耗内存)
③匿名自执行函数可以减少内存消耗

坏处
①其中一点上面已经有体现了,就是被引用的私有变量不能被销毁,增大了内存消耗,造成内存泄漏,解决方法是可以在使用完变量后手动为它赋值为null;
②其次由于闭包涉及跨域访问,所以会

JS面试题(进阶)——原型链、this指向、闭包

参考技术A 知识点:

面试题(一):

面试题(二):

第一种:方法调用

第二种:函数调用,里面的this指向的是window

第三种:构造函数调用:this指向调用它的对象

第四种:上下文调用模式,this指向谁?指向的是传入的对象

let var const 函数作用域

1、在函数里面创建一个对象obj

2、将函数里面的this指向创建的那个对象obj

3、返回这个obj对象

闭包的概念:

闭包的使用场景:

闭包的问题:让变量得不到释放,增加内存使用率

给DOM 添加点击事件:

区别:onclick 会覆盖相同的事件,addEventListener会逐一的触发

DOM 事件三要素: 事件源, 事件类型, 事件处理程序

事件流程: 冒泡,捕获

ES5的继承

1、构造函数实现继承

2、借助原型是实现继承

3、组合方式实现继承

ES6的继承

深入学习可参考: https://juejin.im/post/5daeefc8e51d4524f007fb15?utm_source=gold_browser_extension#heading-22

以上是关于js 闭包(面试题)的主要内容,如果未能解决你的问题,请参考以下文章

JS面试题(进阶)——原型链、this指向、闭包

从面试题谈谈js的闭包,原型

转载大部分人都会做错的经典JS闭包面试题

经典js闭包----对《大部分人都会做错的经典JS闭包面试题》的理解

js面试题-----作用域与闭包

解析js中作用域闭包——从一道经典的面试题开始