持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
- 实用的高阶函数
- 闭包是什么?
实用的高阶函数
Array对象还提供了很多非常实用的高阶函数
every()方法可以判断数组的所有元素是否满足测试条件find()方法用于查找符合条件的第一个元素,如果找到了,返回这个元素,否则,返回undefinedfindIndex()和find()类似,也是查找符合条件的第一个元素,不同之处在于findIndex()会返回这个元素的索引,如果没有找到,返回-1forEach()和map()类似,它也把每个元素依次作用于传入的函数,但不会返回新的数组。forEach()常用于遍历数组,因此,传入的函数不需要返回值
闭包是什么?
要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。JS语言的特殊之处,就在于函数内部可以直接读取全局变量。
一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。
闭包让你可以在一个内层函数中访问到其外层函数的作用域。当一个函数返回了一个函数后,其内部的局部变量还被新函数引用。在JavaScript 中,每当创建一个函数,闭包就会在函数创建的同时被创建出来。
function count() {
var arr = [];
for (var i=1; i<=3; i++) {
arr.push((function (n) {
return function () {
return n * n;
}
})(i));
}
return arr;
}
var results = count();
var f1 = results[0];
var f2 = results[1];
var f3 = results[2];
f1(); // 1
f2(); // 4
f3(); // 9
返回闭包时,要注意:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
最后
以上习题&笔记从大佬们的论坛学习而来,特感谢大佬们的知识分享~ (学习技术知识,果然要看大佬们的技术博客,大家有好的推荐也欢迎指引我这个小白哈,感恩!)
附上学习链接,感谢这些大佬出题和解答: