Я запускаю это в node.js.Почему следующий сегмент кода теряет область видимости для cb
var?
Client.prototype.post = function(path, data, callback) {
var self = this;
var cb = callback;
return function() {
console.log(path);
console.log(cb);
rest.post(self.baseUrl + path, data).on('complete', cb || this.callback);
}
};
Вызов этой функции выглядит следующим образом client.post('/user', {}, function() {});
и выдает следующее:
/user
undefined
Iя ожидаю, что вторая строка будет [Function]
Возвращенная функция, вероятно, выполняется с помощью методов js .call()
или .apply()
, чтобы изменить область, в которой она выполняется. Но я думаю, что cb
будет доступенточно так же, как path
есть.
Обновление: Включение обратного вызова в функцию заставляет его работать.Но я все еще хотел бы объяснить, что здесь происходит.
var cb = function() { callback(); };