我将函数调用存储在变量中。
var snippet = function { alert('a') };
snippet.call(); // Displays an alert
我的问题是我需要将变量作为函数的参数传递。
var snippet;
function() {
var word1 = 'hello';
var word2 = ' world';
snippet = function() { alert( word1 + word2 ); };
}
当我调用'snippet'时,变量是未定义的:
snippet.call(); // Cannot read property 'x' of undefined
如何保存函数,以便将word1
和word2
的值保存为params而不是实际变量? (所以无论是否定义了变量,我都可以在以后调用它)
答案 0 :(得分:2)
这应该可以解决问题:
var snippet = function ( word1, word2 ) {
alert ( word1 + word2 );
};
snippet ( "foo", "bar" );
// or
snippet.call ( ctx, "foo", "bar" ); // where `ctx` is the context you wish to use
有关call()
功能的更多信息:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/call
答案 1 :(得分:1)
在撰写本文时无法准确说出问题的确切位置,但您可以在闭包返回函数中关闭两个参数,如下所示:
var snippet = function (word1, word2) {
return function() { alert( word1 + word2 ); };
};
snippet('hello', 'world').call();
snippest('hello', 'word')
返回一个闭包,然后你可以调用或传递它。您也可以立即创建闭包并创建一些稍短的东西:
var snippet = function(word1, word2) {
return function() {
alert(word1 + word2);
};
}('hello', 'world');
snippet.call();
这与之前相同,但会立即调用外部函数,并将结果闭包分配给snippet
,然后可以调用或传递它。