2010-09-10 27 views
10

Tại sao tôi gặp phải các lỗi này?Làm cách nào để giải quyết cảnh báo JSLint "Không sử dụng 'mới' cho các tác dụng phụ"?

Sự cố ở dòng 329 ký tự 60: Không sử dụng 'mới' cho các tác dụng phụ.

new widget.StyledDropdown(dojo.byId("sTitle"));

Vấn đề tại dòng 330 nhân vật 61: Không sử dụng 'mới' cho tác dụng phụ.

new widget.StyledDropdown(dojo.byId("sSuffix"));

Vấn đề tại dòng 336 nhân vật 57: Không sử dụng 'mới' cho tác dụng phụ.

true,{shortenName : true,maxChars : 20});

Vấn đề tại dòng 338 nhân vật 129: Không sử dụng 'mới' cho tác dụng phụ.

new widget.StyledDropdown(dojo.byId("sCountry"),USPS.Address.countrySw...

+4

Không ai trong số tám câu hỏi khác của bạn đã nhận được câu trả lời chấp nhận được? Không ai? –

+0

Tôi đã đặt câu hỏi sai. Nhưng tôi đã giải quyết được vấn đề của mình. –

Trả lời

21

Bạn đang không lưu trữ một tham chiếu đến các đối tượng mới được tạo ra, mà là một mùi mã.

JSLint đang nói "Bạn đang tạo một số đối tượng nhưng ngay lập tức loại bỏ chúng; lý do duy nhất bạn có thể làm đó là hành vi tạo ra các vật thể có tác dụng phụ, điều kỳ lạ."

Bạn có thể mất cảnh báo bằng cách ngăn cản các nhà thầu của bạn có các tác dụng phụ (điều này có nghĩa là tìm một cách khác để làm bất cứ điều gì họ đang thực hiện, ví dụ: bằng cách di chuyển mã đó thành hàm bình thường) hoặc bằng cách lưu trữ tham chiếu cho các đối tượng mới được tạo (ngay cả trong một biến cục bộ tạm thời mà bạn loại bỏ).

+7

+1, nhưng * Chúa * Tôi ghét thuật ngữ đó. –

+0

Nếu bạn có nghĩa là "mã mùi", thì tôi cũng vậy, nhưng thật không may là khá thích hợp. –

+3

@Tim: Yup, đó là ý tôi. Tại sao chúng ta không thể nói "thực hành kém"? –

1

Xem xét lại chiến lược là tốt nhất, nhưng thường xuyên hơn, xử lý nợ công nghệ trong một chu kỳ phát triển không phải là một lựa chọn.

Nếu bạn đang sử dụng JSHint, bạn có thể ghi đè tùy chọn này trên cơ sở từng trường hợp. Thêm chú thích jshint này vào phạm vi mã vi phạm.

/* jshint -W031 */ 
new widget.StyledDropdown(dojo.byId("sTitle")); 
new widget.StyledDropdown(dojo.byId("sSuffix")); 
... 

Cấu hình nội tuyến là chức năng được sắp xếp. Vì vậy, bất cứ điều gì bên ngoài phạm vi của bình luận vẫn sẽ được kiểm tra.

Các vấn đề liên quan