这是简单的脚本:
function parentFunc() {
var x = 15;
process(x);
}
parentFunc();
function process(x) {
alert(x);
}
现在,当页面加载时,parentFunc()
正在执行调用process()
函数并将参数发送给它;有没有办法让它在parentFunc()
被调用时只是将参数发送到process()
函数而不执行它?我需要一个没有全局变量的解决方案。
这是简单的脚本:
function parentFunc() {
var x = 15;
process(x);
}
parentFunc();
function process(x) {
alert(x);
}
现在,当页面加载时,parentFunc()
正在执行调用process()
函数并将参数发送给它;有没有办法让它在parentFunc()
被调用时只是将参数发送到process()
函数而不执行它?我需要一个没有全局变量的解决方案。
如果我正确理解您的问题,您想绑定某个参数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;
};
使用闭包 - 您可以将不同的值传递给 x 并在每次调用 parentscript 时创建不同的参考框架。
function parentscript(x) {
process = function(){
alert(x)
}
return process
}
f = parentscript(23);
f(); //alerts 23