Tôi đang làm việc để làm cho tất cả các mã JS của chúng tôi đi qua jslint, đôi khi với rất nhiều tinh chỉnh với các tùy chọn để lấy mã kế thừa ngay bây giờ với mục đích sửa lỗi chính xác sau này.Cách sửa lỗi jslint 'Không thực hiện các chức năng trong vòng lặp.'?
Có một điều mà jslint phàn nàn về việc tôi không có workround cho. Đó là khi sử dụng các cấu trúc như thế này, chúng tôi nhận được lỗi 'Không thực hiện các chức năng trong vòng lặp.'
for (prop in newObject) {
// Check if we're overwriting an existing function
if (typeof newObject[prop] === "function" && typeof _super[prop] === "function" &&
fnTest.test(newObject[prop])) {
prototype[prop] = (function(name, func) {
return function() {
var result, old_super;
old_super = this._super;
this._super = _super[name];
result = func.apply(this, arguments);
this._super = old_super;
return result;
};
})(prop, newObject[prop]);
}
}
Vòng lặp này là một phần của một thực hiện JS thừa kế cổ điển mà các lớp học mở rộng các lớp học hiện có giữ lại các tài sản của các lớp mở rộng siêu khi gọi một thành viên của lớp mở rộng. Chỉ cần làm rõ, việc thực hiện ở trên được lấy cảm hứng từ điều này blog post bởi John Resig.
Nhưng chúng tôi cũng có các phiên bản khác của các hàm được tạo trong vòng lặp.
Cách giải quyết duy nhất cho đến nay là loại trừ các tệp JS này khỏi jslint, nhưng chúng tôi muốn sử dụng jslint để xác thực mã và kiểm tra cú pháp như một phần của quá trình tích hợp liên tục và xây dựng quy trình làm việc của chúng tôi.
Có cách nào tốt hơn để triển khai các chức năng như thế này hay có cách nào để tinh chỉnh mã như thế này thông qua jslint không?
Làm thế nào là một "nhà sản xuất chức năng" bất kỳ tốt hơn so với việc tạo ra một chức năng mới cho mỗi vòng lặp lặp? Nó không giống nhau sao? – Gili
@Gili: Mã để tạo hàm make_handler được thực thi tại điểm nó nói 'function make_handler (div_id)'. Khi bên trong vòng lặp 'for',' make_handler' bây giờ là tham chiếu đến hàm đó và không được tạo lại cho mỗi lần lặp của vòng lặp. –
Sẽ không hiệu quả hơn khi phân bổ chức năng này thành một var – Pascalius