这是简单的脚本:
function parentFunc() {
var x = 15;
process(x);
}
parentFunc();
function process(x) {
alert(x);
}
现在,当页面加载时,正在执行parentFunc()
,调用process()
函数并向其发送参数;是否有任何方法可以使它在调用parentFunc()
时将参数发送到process()
函数而不执行它?我需要一个没有全局变量的解决方案。
答案 0 :(得分:3)
如果我理解你的问题,你想将某个参数绑定到process
并稍后执行该函数吗?
您可以使用.bind()
[MDN]执行此操作。它接受上下文和参数并创建一个新函数:
var process_bound = process.bind(null, x);
// later
process_bound();
对于不支持.bind()
的浏览器的实现,请查看MDN文档(或参阅Rocket的评论)。
以下是您应该如何使用它:
function process(x) {
alert(x);
}
function parentFunc() {
var x = 15;
return process.bind(null, x);
}
var process_bound = parentFunc();
// now bind the event handler to the element
var element = document.getElementById('someId');
element.onclick = function() {
process_bound();
return false;
};
答案 1 :(得分:0)
使用闭包 - 您可以将不同的值传递给x,并在每次调用parentscript时创建不同的引用框。
function parentscript(x) {
process = function(){
alert(x)
}
return process
}
f = parentscript(23);
f(); //alerts 23