Điều gì thực sự xảy ra lại là bạn đang thêm một câu lệnh trống sau hàm.
function test (o) { return o; };
có thể được xem là tương tự như:
var test = 0;;
Đó dấu chấm phẩy thứ hai không phải là một lỗi mỗi-se. Trình duyệt xử lý nó như một tuyên bố hoàn toàn không có gì xảy ra.
Có hai điều cần ghi nhớ, tại đây.
này áp dụng CHỈ hoạt-tờ khai và kiểm soát khối (cho/nếu/khi/chuyển đổi/etc).
Chức năng-tờ khai cần được xác định ở dưới cùng của phạm vi của bạn, do đó bạn không chạy vào các vấn đề như thế này:
function test() {}
(function (window, document, undefined) { /* do stuff */ }(window, document));
Bởi vì trình duyệt sẽ cho rằng bạn có ý nghĩa function test() {}(/*return value of closure*/);
Đó là một lỗi. Một lỗi rất xấu và khó chịu, rất dễ bỏ qua.
Nhưng điều đó không sao, bởi vì các khai báo hàm có thể đi theo câu lệnh trả về và vẫn hoạt động tốt.
Vì vậy, ngay cả khi bạn muốn đi:
function doStuff() {
return (function() { /*process stuff*/ test(); }());
function test() {}
}
Điều đó sẽ làm việc chỉ peachy.
Điều này có thể có liên quan: [nên một hàm var fil đa chức năng() {/ * Mã * /} nhận được dấu chấm phẩy] (http://stackoverflow.com/q/4515084/990877). Tóm lại: đóng bằng ';' khi khai báo hàm trong biểu thức gán (tức là 'var f = function() {}'). – PPvG