2

这是简单的脚本:

function parentFunc() {
    var x = 15;
    process(x);
}

parentFunc();

function process(x) {
    alert(x);
}​

现在,当页面加载时,parentFunc()正在执行调用process()函数并将参数发送给它;有没有办法让它在parentFunc()被调用时只是将参数发送到process()函数而不执行它?我需要一个没有全局变量的解决方案。

4

2 回答 2

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;
};
于 2012-05-16T15:22:07.193 回答
0

使用闭包 - 您可以将不同的值传递给 x 并在每次调用 parentscript 时创建不同的参考框架。

function parentscript(x) {
process = function(){
    alert(x)
}
return process
}
f = parentscript(23);
f(); //alerts 23
于 2012-05-16T16:35:45.730 回答