封装一个函数完成功能:add2multi9div3 的结果是6。并解释一下代码
function add(num) {
let result = num;
function multi(m) {
result *= m;
return this;
}
function div(d) {
result /= d;
return result;
}
return {
multi: multi,
div: div
}
}
console.log(add(2).multi(9).div(3)); // 输出 6
这段代码实现了函数链式调用。函数 add 接受一个参数 num,并返回一个对象,该对象包含两个属性 multi 和 div,它们分别是两个闭包函数 multi 和 div 的引用。
multi 函数接受一个参数 m,将 result 乘以 m,并返回 this,即返回包含 multi 和 div 的对象,以便实现链式调用。
div 函数接受一个参数 d,将 result 除以 d,并返回 result。
最后通过 console.log(add(2).multi(9).div(3)); 调用,先执行 add(2) 得到一个包含 multi 和 div 的对象,接着调用 multi(9) 将 result 乘以 9,然后继续调用 div(3) 将 result 除以 3,最终得到 6 的结果。
原文地址: https://www.cveoy.top/t/topic/Nyr 著作权归作者所有。请勿转载和采集!