所以,我想做这样的事情:
var a = 'a';
var dummy = function() {
// Print out var 'a', from the scope above
console.log('Dummy a: ' + a);
// Print out 'b', from the 'compelled' scope
console.log('Dummy b: ' + b);
}
(function() {
var b = 'otherscope';
// I know apply won't work, I also don't want to merge scopes
dummy.apply(this);
// I want something like this:
dummy.compel(this, [], {b: 'injected!'});
})();
但这行不通。
我实际上并不希望一个函数能够达到 2 个作用域,我确实希望能够从外部设置虚拟函数内部使用的“b”变量。
最佳答案
您可以使b
成为函数的参数或全局变量。
var a = 'a';
var dummy = function(b) {
...
}
或
var a = 'a';
var b;
var dummy = function() {
...
}
第一个允许您选择虚拟函数何时访问变量,第二个允许它在任何地方访问。
关于javascript - 将变量注入(inject)函数的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15556186/