高阶函数高阶函数是对其他函数进行操作的函数,它接收函数作为参数或者将函数作为返回值输出 function fn(callback) {
callback()
}
fn(function () {
console.log('cb')
})
//或者
function fn() {
return function () {
console.log(1)
}
}
var f = fn()
f()闭包 - closureES6之前变量的作用域分为两种:全局和局部。 函数内部可以访问函数外面的变量,外部无法使用函数内部的变量。 函数执行结束,内部的变量会自动销毁。 闭包就是指有权访问另一个函数作用域中的变量的函数。 闭包就是函数。 闭包的作用:扩展了变量的作用范围。 外层函数的变量 + 内层函数
function fun() {
//外层函数的变量
let a = 10
//内层函数
function fn() {
console.log(a)
}
fn()
}
fun()外部访问内部变量的实现 function fun() {
var a = 10
function fn() {
console.log(a)
}
return fn
}
var f = fun()
f()案例应用<ul>
<li>鸡蛋</li>
<li>牛肉</li>
<li>火腿</li>
<li>腊肉</li>
</ul>var lis = document.querySelectorAll('li')
for (var i = 0; i < lis.length; i++) {
(function (i) {
console.log(i)
lis.onclick = function () {
alert(i)
}
})(i)
}var lis = document.querySelectorAll('li')
for (var i = 0; i < lis.length; i++) {
(function (i) {
setTimeout(function () {
console.log(lis.innerHTML)
}, 2000)
})(i)
}
|