考点介绍:
闭包随处可见,一个 Ajax 请求的成功回调,一个事件绑定的回调方法,一个 setTimeout 的延时回调,或者一个函数内部返回另一个匿名函数,这些都是闭包。简而言之,无论使用何种方式对函数类型的值进行传递,当函数在别处被调用时,都有闭包的身影。
本期分享的前端JS语言之闭包相关,分为试题、文章以及视频三部分。
答案详情解析和文章内容点击下方链接即可查看!
一、考点题目
1、有以下函数,这3个函数中哪个能够访问外部范围变量?
clickHandler,immediate和delayedReload:
let countClicks = 0;
button.addEventListener('click', function clickHandler() {
countClicks++;
});
const result = (function immediate(number) {
const message = `number is: ${number}`;
return message;
})(100);
setTimeout(function delayedReload() {
location.reload();
}, 1000);
解答:clickHandler 能够从外部作用域访问变量 countClicks......
2、闭包的缺点
解答:优点也是缺点,本应被销毁的变量,因为闭包的原因没有被销毁,长期存在的话,容易造成内存泄漏
3、分析输出是什么
function test (){
var num = [];
var i;
for (i = 0; i < 10; i++) {
num[i] = function () {
console.log(i);
}
}
return num[9];
}
test()() // 输出什么?
解答:这道题中首先执行test(),这个函数中进行了十次循环,每次循环都往数组num中新增一个function(这个function这里还没有执行,只是把函数的定义作为数组元素扔进去),最后返回下标为9的这个function.....
4、创建匿名函数表达式
解答:创建一个变量,这个变量的内容为一个函数.....
(答案点击下方链接查看哦)
二、考点文章
1、闭包,看这一篇就够了——带你看透闭包的本质
闭包:内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后……
2、JS前端闭包是什么?私有变量可以用到闭包
百度百科定义:闭包就是能够读取其他函数内部变量的函数。创建闭包的通常方式,是在一个函数内部创建另一个函数……
3、【校招VIP】前端之JS闭包
闭包让你可以在一个内层函数中访问到其外层函数的作用域。在 JavaScript 中,每当创建一个函数,闭包就会在函数创建的同时被创建出来……
(点击下方链接查看完整版)
三、考点视频
1、实现一个栈,需要有pop、push和min方法
本题题目有补充,就是min方法的时间复杂度最低。当然min方法也是这道题的最主要考点……
更多资讯可搜索校招VIP小程序查看哦!
移动端链接:https://m.xiaozhao.vip/dTopic/detail/546
PC端链接:校招VIP,专题 - 校招VIP