传递变量值

时间:2012-05-16 15:13:05

标签: javascript

这是简单的脚本:

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

parentFunc();

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

现在,当页面加载时,正在执行parentFunc(),调用process()函数并向其发送参数;是否有任何方法可以使它在调用parentFunc()时将参数发送到process()函数而不执行它?我需要一个没有全局变量的解决方案。

2 个答案:

答案 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