Điều đó được thực hiện để đảm bảo rằng không xác định luôn luôn là undefined
. Trong các phiên bản cũ của thông số ECMAScript (trước ECMAScript 5), undefined không phải là một từ dành riêng mà là một biến thông thường. Trong trình duyệt cũ này sẽ được phép ví dụ:
undefined = 2; // Assign a different value to undefined
// Now this statement would be true
if (undefined == 2)
Vì vậy, để đảm bảo rằng không xác định là trong thực tế không xác định, ngay cả khi một số khác "ác" kịch bản sẽ bố trí không xác định với giá trị khác, bạn tạo một tham số mà bạn gọi undefined, và sau đó khi bạn gọi hàm, bạn đảm bảo không truyền giá trị cho tham số đó - do đó bạn có thể chắc chắn rằng biến không xác định sẽ luôn được xác định trong hàm của bạn.
Vì vậy, trong trường hợp của jQuery:
(function($, undefined) { ... })(jQuery);
Họ vượt qua trong jQuery và gán nó vào biến $ cho thuận tiện, nhưng sau đó họ không vượt qua một giá trị thứ hai để tham số không xác định, do đó không xác định di chúc không được xác định.
Trình duyệt hiện tại
Trong trình duyệt hiện đại, undefined
là một tổ chức phi cấu hình tài sản, không ghi theo ECMAScript 5 specification.
Nguồn
2012-03-07 14:05:23
Lý do jQuery sử dụng phương pháp này thay vì 'typeof' là nó nén tốt hơn nhiều trong trình chỉnh sửa Javascript. – interjay
Thats true, tuy nhiên typeof là phương pháp an toàn nhất. Bạn cũng có thể sử dụng bản chất giả của undefined, đó sẽ là kiểm tra ngắn nhất cho 'undefined' nhưng bị che khuất bởi sự tồn tại của các giá trị khác. – Christoph