Нет, это не сработает.Важно то, где (лексически) функция определена , а не там, где она вызвана.
Когда выясняется, что (если вообще что-то) означает "c",язык выглядит в локальной области видимости, а затем в следующей области видимости на основе определения функции .Таким образом, если бы этот вызов «a» происходил в другой функции, которая имела , имеет свой собственный локальный «c», то это значение было бы тем, что показало предупреждение.
function b() {
var c = 'banana';
a(function() {
alert(c);
});
}
b(); // alert will show "banana"