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