高阶函数
一个函数作为另一个函数的参数传递,那么另一个函数就称为高阶函数
闭包的概念:一个函数有权访问另一个函数作用域的函数
- 场景1:实现一个定时器,每隔1s打印一个数字,如1,2,3,4
for(let i = 0 ; i < 6 ; i++){
var fun1 = function(e){
setTimeout(()=>{
console.log(e)
},1000*e)
}
fun1(i)
}
for(let i = 0 ; i < 6 ; i ++){
(function(e){
setTimeout(()=>{
console.log(e)
},1000*e)
})(i)
}
for(let i = 0 ; i< 5 ;i++){
setTimeout(()=>{
console.log(i)
},1000*i)
}
var compare = function(x){
return function(y){
return x>y
}
}
var compare20 = compare(20)
console.log(compare20(30))
console.log(compare20(10))
console.log(compare20(0))
console.log(compare20(40))
function curry (fn) {
return function curriry (...args) {
return args.length >= fn.length ? fn.apply(null,args) : curriry.bind(null,...args)
}
}
var add = function(x,y,z){
return x+y+z
}
let sumFun = curry(add)
console.log(sumFun(2)(2)(6))