请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
函数就一行代码:
const counter = (startNum) => () => ++startNum;
这是箭头函数的好处,简洁。但是,函数看着抽象,分行写看看:
const counter = (startNum) => {
return () => ++startNum;
};
还有点抽象?箭头函数的问题。用传统函数改写一下:
function counter(startNum) {
return function() {
return ++startNum;
}
}
如果确实不习惯箭头函数,现在也应该可以看出点道道来了:这是一个函数里还有函数的函数。外层函数是具名函数,counter,计数器,它需要一个参数,startNum,起始计数值;里层函数被外层函数嵌套,是个匿名函数,它将外层函数的参数 startNum 加 1 并返回结果,然后以函数形式返回给外层函数。
外层函数称父函数,里层的函数称子函数。子函数通常就是一个闭包,它能获取父层函数的参数或变量并对之操作,然后,或者返回操作结果,或者返回函数。本例返回的是函数,所以,这样调用:
<style>
.counterWrap { padding: 40px; }
#txtRes, #btnAdd { margin: 0; padding: 8px; }
</style>
<div class="counterWrap" style="">
<input type="text" id="txtRes" value="0" />
<button type="button" id="btnAdd">点击计数</button>
</div>
<script>
// 闭包计数器
const counter = (startNum) => () => ++startNum;
// 引用函数
const calc = counter(0);
// 输出结果
btnAdd.onclick = () => txtRes.value = calc();
</script>
|