2022-09-18笔试题00
请注意,本文编写于 581 天前,最后修改于 581 天前,其中某些信息可能已经过时。

面试高频手撕代码题

手写一个闭包

闭包小案例

for (var i = 1; i < 5; i++) {
  (function (j) {
    setTimeout(function timer() {
      console.log(j)
    }, j * 1000)
  })(i)
  //闭包的形式解决问题
  //输出为1,2,3,4
}
for (let i = 1; i < 5; i++) {
  setTimeout(function timer() {
    console.log(i);
  }, i * 1000);
}
//输出 1,2,3,4
//let 绑定 for 循环,将其重新绑定到每一次的迭代中,保证每次迭代结束都会重新赋值
//有自己的作用域块,
//var 没有自己的作用域块,所以循环变量就会后一个覆盖前一个,循环完毕只有一个值输出;
for (var i = 0; i < 5; i++) {
  setTimeout(() => {
    console.log(i);
  }, i * 1000);
}
// 输出 5,5,5,5

闭包的简单实现

function sum(a) {
  return function (b) {
    return a + b;
  };
}

var result = sum(1)(2);
console.log(result); // 3

本文作者:前端小毛

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!