javascript - 是否可以将值从函数返回到函数参数?js
问题描述
所以我注意到,当您使用时,.addEventListener()
您可以像这样获取它的事件数组:
document.getElementById("elementID").addEventListener("click",function(event) {
console.log(event);
});
有什么办法可以像这样创建自己的功能吗?我以前试过这个,但我完全忘记了我是怎么做到的。
现在我正在尝试
function foo(do) {
let a = 0;
setTimeout(do,1);
return a;
}
foo(function(a) {
console.log(a);
});
(结果undefined
)
解决方案
您可以将额外的参数传递给setTimeout
,但请注意,更新函数中的值不会将其传播回来(还要注意do
是保留关键字,因此我将名称更改为fn
)
function foo(fn) {
let a = 0;
setTimeout(fn,1,a);
return a;
}
const result = foo(function(a) {
console.log(a);
a += 1
});
console.log(result);
因此,您可以改为传递一个对象,并更新该对象确实会传播更改:
function foo(fn) {
let a = {value:0};
//setTimeout(fn,1,a);
fn(a)
return a.value;
}
const result = foo(function(a) {
console.log(a);
a.value += 1
});
console.log(result);
但请注意,我必须取出setTimeout
并用直接调用替换它fn(a)
- 如果我将它留在里面,该函数将在调用之前返回fn
:
function foo(fn) {
let a = {value:0};
setTimeout(fn,1,a);
return a.value;
}
const result = foo(function(a) {
console.log(a);
a.value += 1
});
console.log(result);
推荐阅读
- unity3d - 我可以与其他 Unity 程序共享游戏画面吗?
- javascript - localStorage 存储 HTMLTextAreaElement 而不是值
- c# - 单击字符串时如何转换日历上的天数
- python-3.x - 如何用 3 个点定义一个平面,并在 3D 中绘制它?
- ruby - Ruby 对象分配类型强制
- matlab - 运行我的旧项目,但在较新的 matlab 版本上。使用 table() 方法弹出错误。有什么改变吗?
- java - 部署到heroku时在飞行途中访问被拒绝
- python-3.x - 从读取文件中删除换行符不起作用
- c - 删除节点 - 链表 - C
- javascript - 如何在影子 dom/web 组件中执行 javascript?