所谓回呼函式(callback function)与一般函式基本相同,差别在於它须「具一定条件後」,才会「被动执行」:
实际上,这就是「把一个函式当作另一个函式」使用的参数,如前文所提到的,包括时间控制在内**「高阶函式」**。
如下例,把 a 函式传入 b 函式,稍後呼叫之:
function b(a) {
if (typeof () == “function” ) {
return a()}
}
const a = () => {
return console.log("123")
}
b(a) // 回传 123
若想要控制复数函式间的执行顺序(如:解决setTimeout造成的顺序异动),也能活用回呼函式。意者可参考:
https://medium.com/appxtech/%E4%BB%80%E9%BA%BC%E6%98%AFcallback%E5%87%BD%E5%BC%8F-callback-function-3a0a972d5f82
对每个元素做事情,并收集成一个新阵列,回传值 = 新阵列。例:
const lists = [4, 2, 1, 4, 6, 8, 7]
let result = lists.map(x => {
if (x > 3) {
return x * 3
} else {
return x
}
})
console.log(result)
console.log (lists.map ( (x) => x * 2) )
let result = (lists.map ( (x) => x * 2) )
console.log (result)
对每个元素做事情,不会变成新阵列,回传值 = undefined。
针对数字加减时需要(不能用回圈)。例:
let top = 0
Heroes.forEach((hero) => {
if (hero.power > top){
top=hero.power
}
})
console.log(top);
条件成立的就留下来,并收集成一个新阵列,回传值 = 新阵列。
回传值只要是true就会保留,但索引值0是false。例:
const lists = [4, 2, 1, 4, 6, 8, 7]
let a = lists.filter( (n) => n > 3)
.map((n) => n*2)
console.log(a)
归纳、简化。常用来加总数值。
通常设acc预设值为0。若不设预设值,则取阵列第一个当acc,第二个当cv的开头。
具体上,将阵列的每个元素传到 callback 进行运算,并回传一个单一值。
acc=累加值、currentValue=目前值。
const lists = [4, 2, 1, 4, 6, 8, 7] //每回的目前值
.reduce( (acc, currentValue) => {
return 1 //每圈开始的累加值=下一轮的acc。若设return acc + currentValue 就会累加。
} , 0 ) //第一圈的累加值起始值0
宣告reducer的写法:
function reducer (acc, currentValue) {
return acc + currentValue
}
let r = lists.reducer(reducer, 0)
console.log(r)
注意:
IIFE全名「Immediately Invoked Function Expression」,这是一种不用宣告,立即定义,马上执行的函式。
具体写法,是在函式尾端加上一组小括号 () ,可以带引数进去,一并呼叫。如:
(function() {} )()
此外,jQuery 是个大 IIFE,意者可再深入研究之。
<<: [Day 17] - 初探永丰银行线上收款API - 丰收款 - Sign值计算(2)
拍西瓜 ( 储存最高分 ) 教学原文参考:拍西瓜 ( 储存最高分 ) 这篇文章会在 Scratch ...
事件简述 陆女主播人设的背後其实是男森... 伪声真的不错听... 结论(废宅又在说废话了!!) 网...
一、前言 上一篇文章的结尾有提到大家可以在职场上定时自我检视的小习惯,这边分享我自己维持几个月後...
在使用循环的过程中,有可能循环代码会包含很多内容,当某个条件达到时,我们可以判断不需要继续运行循环了...
纠团的功能我把它切成两个部分 使用者输入讯息 背景执行 今天先介绍使用者输入讯息的部分 使用者输入讯...