현재 r.js로 현재 jQuery (개발 버전 1.8.1)를 최적화하려고합니다. 이는 보석 requirejs-rails가있는 레일스 프로젝트의 자산 편집 중에 발생합니다.재귀 함수에 대한 r.js의 버그?
나는 최적화 프로그램에서 버그가 발생했다고 생각합니다. 최적화 된 JQuery와 슬로우됩니다 add(arg);
오류를 포함하는 줄에 도달 할 때 add
가 정의되어 있지 않은 것을,
(function add(args) {
jQuery.each(args, function (_, arg) {
var type = jQuery.type(arg);
if (type === "function" && (!options.unique || !self.has(arg))) {
list.push(arg);
} else if (arg && arg.length && type !== "string") {
// Inspect recursively
add(arg);
}
});
})(arguments);
: JQuery와 소스 라인 999의 주위에, 다음과 같은 코드를 찾을 수 있습니다. 함수 호출과 같이 add(...)
을 유지하면서 최적화, e
에 기능 add
이름을 변경하기 때문입니다 :
(function e(args) {
jQuery.each(args, function (_, arg) {
var type = jQuery.type(arg);
if (type === "function" && (!options.unique || !self.has(arg))) {
list.push(arg);
} else if (arg && arg.length && type !== "string") {
// Inspect recursively
add(arg);
}
});
})(arguments);
나는 그것을 다시 작성하여 코드를 수정 할 수 있었다 :
var fnAdd = function (args) {
jQuery.each(args, function (_, arg) {
var type = jQuery.type(arg);
if (type === "function" && (!options.unique || !self.has(arg))) {
list.push(arg);
} else if (arg && arg.length && type !== "string") {
// Inspect recursively
console.log("inspecting", fnAdd);
fnAdd(arg);
}
});
};
fnAdd(arguments);
수 이것은 r.js의 버그로 간주됩니까? 또는 자바 스크립트 허용되지 않습니다? 나는 왜 내가 문제를 가지고있는 첫 번째인지 궁금하다 (적어도 구글은 어떤 해결책도 밝히지 않았다).