Tại sao JSLint lại phàn nàn nếu một cái gì đó sử dụng một hàm chưa được xác định? Vấn đề là hàm được định nghĩa - và nếu cái gì đó gọi hàm đó, hàm đó tồn tại và mọi thứ sẽ hoạt động.Lỗi jsLint: “somefunction() đã được sử dụng trước khi được xác định”
Hãy nhìn vào mã bên dưới:
function foo()
{
// calls bar()
};
function bar()
{
// calls foo()
};
Không có cách nào để tổ chức thực hiện 2 phương pháp theo cách như vậy mà nó sẽ làm cho JSLint hạnh phúc. Làm cách nào để giải quyết vấn đề này?
Nhưng đó chỉ là một chút khác biệt so với 'hàm foo()', là biểu thức hàm và tất cả. Thêm vào đó, khai báo 'var foo, bar' ở trên cùng là thừa không cần cẩu. Vì vậy, trong ngắn hạn, 'var foo = function() ..., var bar = function() ...' sẽ làm tốt về mặt kỹ thuật. Ngoài ra, tôi nghĩ rằng, xem xét rằng các khai báo hàm được nạp trước bất cứ điều gì khác - JSLint nên sửa chữa các công cụ của họ rồi. – ZenMaster
@ZenMaster: Một ngã ba của 'jslint', [' jsHint'] (http://www.jshint.com/docs/), giải quyết điều này cho phép bạn đặt '" latedef ": false' trong các tùy chọn. (Nó không ảnh hưởng đến tên biến, chỉ tên hàm.) –
Câu trả lời này sẽ ngắt mã dựa trên hàm định nghĩa cẩu ~ –