如何在调用不带括号的函数时传递参数 [Javascript]
How to pass parameters when calling a function without the parenthesis [Javascript]
我有一个名为"tryMe"的函数,我不带括号调用它,但不完全是这个,但这个想法就像你在这里要做的:
setTimeout(tryMe,200);
如何传递所需的参数?
我正在使用一个 jquery 插件,它使我能够调用一个函数,但我必须在括号内调用它,否则它会在加载时自行执行。
setTimeout(function() { tryMe(parm1, parm2); }, 200);
一个更强大的产品,以确保 parm2
parm1
的值在超时触发之前不会更改(根据@lincolnk的评论(:
setTimeout(function() {
var p1 = parm1;
var p2 = parm2;
tryMe(p1, p2);
}, 200);
@patrick DW,你是对的,必须事先进行评估。
您可以将tryMe
包装在闭合中。
例如:
var f = function(){tryMe('some parameter');};
setTimeout(f, 200);
在这里,我们创建一个函数对象, f
,它使用所需的参数调用tryMe
。 然后我们f
传递给setTimeout
. 超时到期时,将调用f
,进而调用具有所需参数的tryMe
。
如果您希望传入在调用超时之前可能会更改的参数(例如,如果您在for
循环中设置多个超时(,则警告一句:您需要像这样绑定这些变量:
var f = function(someParamter){return function(){tryMe(someParameter);};};
setTimeout(f(someParameter), 200);
原因只是做类似的事情
setTimeout(tryMe('some parameter'), 200); //Does not work.
不起作用是因为您传递的是计算tryMe
的结果,而不是函数对象本身tryMe
。
您不是在调用该函数,而是在 200 毫秒后调用浏览器。你只是为它提供了需要调用的函数。Firefox 实际上允许在 setTimeout
调用中指定其他参数:
setTimeout(tryMe, 200, "first parameter", "second parameter");
但是,据我所知,没有其他浏览器支持此功能,因此您应该真正使用其他答案已经解释的闭包功能。在这里,您创建一个临时函数,其唯一目的是使用正确的参数调用原始函数。
setTimeout(function() {tryMe("first parameter", "second parameter")}, 200);
相关文章:
- 在url参数javascript中存储键值对列表
- 可选参数 JavaScript 技巧
- 如何计算参数 JavaScript 中的条件
- 未定义的变量作为函数参数 javascript
- 使用带有参数 Javascript 的函数更改全局变量
- 如何在参数JavaScript中更改对象属性
- 如何使用参数(javascript)调用Date构造函数
- 作为参数(javascript)传递的函数的系统唯一id
- Backbone.BabySiter内部参数-Javascript Scope
- 未定义函数参数-Javascript
- 谷歌地图api v3-IE7-main.js错误-无效参数(javascript)
- 通过onclick函数发送参数-Javascript
- 传递属于对象的匿名方法作为参数-Javascript
- 未捕获类型错误:没有足够的参数Javascript游戏
- 缺少)参数Javascript错误
- 在函数参数Javascript上使用toSentenceCase
- 跳过函数参数javascript
- 如何在调用不带括号的函数时传递参数 [Javascript]
- 如何传递多个参数javascript
- Foreach键和值输入参数javascript