2
node.js에서 실행 중입니다. 다음 코드 세그먼트가 cb
var의 범위를 잃는 이유는 무엇입니까?이 javascript 함수가 클로저 범위를 잃는 이유는 무엇입니까?
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() {});
모양 및 출력 다음 내가 반환 함수는 아마도 하나의 js의 .call()
이상에서 실행중인 [Function]
로 두 번째 줄을 기대하고 있습니다
/user
undefined
.apply()
에서 실행되는 범위를 변경하는 방법이 있습니다. 그러나 과 마찬가지로 cb
에 액세스 할 수 있다고 생각합니다.
업데이트 : 함수에서 콜백을 래핑하면 제대로 작동합니다. 그러나 나는 아직도 여기서 일어나는 일에 대한 설명을 원합니다.
var cb = function() { callback(); };
'call' /'apply'는 범위가 아닌 컨텍스트를 변경합니다. 무슨 일이 일어나고 있는지 말하는 것은 일어나지 않아야합니다. 실제 코드에 연결할 수 있습니까? – david
저를 위해 일하십시오 : http://jsfiddle.net/Squeegy/Uf9nD/ 아마 당신의 문제는 다른 곳에서 거짓말을합니다 ... –
https://gist.github.com/1503056 lines 33-41. 이 파일은 vowsjs –