js函数柯里化的概念和运用
函数轲里化
// 返回一个函数形成闭包query不会被销毁
function scoreQuery(query) {
return (score) => {
if (score >= query) return true;
else false;
}
}
// 函数轲里化通过给原函数传递不同的参数接收返回的函数来使用
let score60 = scoreQuery(60);
let score80 = scoreQuery(80);
let score1 = 70;
let score2 = 70;
if (score60(score1)) {
console.log(score1, "成绩合格")
} else {
console.log(score1, "成绩不合格")
}
if (score80(score2)) {
console.log(score2,"成绩合格")
} else {
console.log(score2,"成绩不合格")
}
// 运行结果:
// 70 成绩合格
// 70 成绩不合格
函数轲里化的运用
例如你要做一个消息列表的删除功能还需要一个删除提示,怎么能优雅的点击删除之后获取相关参数,唤起提示modal并在点击删除之后执行删除。
在点击事件的时候把参数传递并用一个变量来接收返回的函数。deleteReq需要定义在最外层。
<TouchableWithoutFeedback
styles={{backgroundColor: 'red', width: 20, height: 20}}
onPress={() => (deleteReq = deleteForum(item?.id, index))}>
<Image
source={require('../image/delete.png')}
style={styles.icon}></Image>
</TouchableWithoutFeedback>
返回一个函数形成闭包使里面值能够保持
const deleteForum = (id, index) => {
setVisibleDelete(true);
return () =>
fetchRequest(`/v1/forumThread/id/${id}`, 'DELETE', '', navigation).then(
res => {
if (res.code == '0000') {
dataList.splice(index, 1);
setDataList([...dataList]);
}
},
);
};
在点击确定删除的时候执行返回的函数实现删除
<Modal
title="是否删除当前帖子?"
transparent
onClose={() => setVisibleDelete(false)}
maskClosable
visible={visibleDelete}
footer={[
{text: '取消'},
{text: '删除', onPress: () => deleteReq()},
]}></Modal>
本文作者:大海&
本文链接:https://www.cnblogs.com/oceanus/p/16407809.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。