有没有童鞋遇到过同样的问题:JS中箭头函数中参数传递的问题

问题描述
下面的代码输出2,如何传递参数才能在**调用函数**的时候输出**函数创建时**的rid值:1
求除了使用不同变量名之外的其它解决方案,谢谢~
相关代码
varrid=1;
varf1=(id=rid)=>{
console.log(rid);
}
rid=2;
f1();//输出2,如何能让输出f1函数创建时候的rid值:1
下面是原始代码
//获取任务列表
varrid=this.getRid();
action={
rid:rid,
action:'getTasks'
}
this.$store.state.ws.eventList[rid]=(d,id=rid)=>{
vardata=d.data;
if(data.length>0){
for(variindata){
this.$store.state.task.taskList.push(data[i]);
}
}
deletethis.$store.state.ws.eventList[id];
}
this.$store.state.ws.websocket.send(JSON.stringify(action));
//获取好友列表
rid=this.getRid();
action={
rid:rid,
action:'getFriends'
}
this.$store.state.ws.eventList[rid]=(d,id=rid)=>{
vardata=d.data;
if(data.length>0){
for(variindata){
data[i].nickname=data[i].nickname?data[i].nickname:data[i].number;
data[i].initial=data[i].initial?data[i].initial:data[i].number.toString().substr(0,1);
data[i].headerUrl=data[i].type===1?"http://p.qlogo.cn/gh/"+data[i].number+"/"+data[i].number+"/100/":"http://q.qlogo.cn/headimg_dl?bs=qq&dst_uin="+data[i].number+"&fid=blog&spec=100";
this.$store.state.allContacts.push(data[i]);
}
}
deletethis.$store.state.ws.eventList[id];
}
this.$store.state.ws.websocket.send(JSON.stringify(action));
慕无忌1623718
浏览 227回答 2
2回答

梵蒂冈之花

varrid=1;varf1=(id=rid)=>{console.log(rid);rid=2;}f1();把rid的赋值放函数里面,既不耽误赋值,输出还是1,是这样吗?

森栏

解决方法不是很简单码,拷贝一份rid即可varrid=1;varbaseRid=rid;varf1=(id=baseRid)=>{console.log(id,baseRid);};rid=2;f1();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript