function foo(itemA) {
async.waterfall(
[
function(callback) {
console.log("I can see itemA as " + itemA); // <-- this works fine
callback(null);
},
outerFunction // <-- this method doesn't have access to itemA
],
function(err, item) {}
);
}
function outerFunction(callback) {
//item A is not defined so this barfs
console.log("I'm going to throw an exception cause... " + itemA);
}
为了整洁起见,我既不想在瀑布内定义所有的函数,也不想玩遍各种包含值的对象的各种精细游戏,以便这些方法可以访问它们,但我不清楚如何(或如果)可以使用bind
或apply
来给这些外部定义的方法访问itemA
,或者如果有一些我不熟悉的其他机制可以使这成为可能。有没有一些方法可以使用.bind或.apply给调用方法或调用方法的范围?
我有这样的感觉,但希望我能忽略某种方式来做到这一点。正如我的问题所述,我很清楚如何传递价值观并使用它们,就像我多年来一直在做的一样......这让我想起了我可能忽视了一个非常强大的机制,但唉,它会出现我没有。 –
@GeniaS。 - 不通过范围。 Javascript中的范围是基于代码的词法布局 - 而不是你可以用'.bind()'或'.apply()'修改的东西。 – jfriend00
“* Javascript中的范围是词法... *”除[*带有*](http://www.ecma-international.org/ecma-262/6.0/#sec-with-statement)外,但没有人提及任何更多。 ;-) – RobG