Đó là comma operator. Nó chạy một loạt các biểu thức, theo thứ tự, và sau đó trả về kết quả của số cuối cùng của chúng. Chính xác như:
myfunc();
myobj.myvar = someobj.prop;
return myobj;
Một số người thực sự thích làm những việc trên một dòng, ngay cả khi không có lý do khách quan. Không có lợi ích trong ví dụ bạn đưa ra, và trong thực tế nó gây nhầm lẫn bởi vì nó làm cho nó trông giống như hai bit đầu tiên liên quan đến giá trị mà cuối cùng sẽ được trả lại, mà họ không.(tôi đã viết rằng trước khi bạn nói với chúng tôi nó đã được minified mã; rõ ràng, không rõ ràng cho con người chỉ là một vấn đề trong mã nguồn, không minified mã.)
Vì bạn đã nói đó là một minifier: Các rất nhỏ lợi ích có thể có của bộ khai thác có thể nhận được ở đây là nếu đây là một phần của khối điều kiện: Nó có thể lưu một hoặc hai ký tự. Nếu chúng ta giả dạng dài trông như thế này:
if (someCondition) {
myfunc();
myobj.myvar = someobj.prop;
return myobj;
}
... sử dụng toán tử dấu phẩy, các minifier thể làm điều này (63 ký tự):
if(someCondition)return myfunc(),myobj.myvar=someobj.prop,myobj
... chứ không phải này (65 ký tự):
if(someCondition){myfunc();myobj.myvar=someobj.prop;return myobj}
... mà không thay đổi các chức năng của mã này, nếu những gì sau là một }
hoặc một số nhân vật thích hợp khác (hoặc end-of -file) để kích hoạt automatic semicolon insertion ở cuối. Nếu không, nó sẽ cần ;
trên cái đầu tiên, nhưng điều đó vẫn tiết kiệm một ký tự.
Nguồn
2012-04-23 16:36:28
Liệu nó trả về một tập các đối; như thế nào bạn có thể quá tải các tham số trong một cuộc gọi chức năng? –
"Mẫu này có lợi gì?" - Nó không có. Nó là khó hiểu, mã không thành ngữ. – Quentin
Tôi không thể thấy bất kỳ lý do gì ... Nó thậm chí còn đặt nhiều vật thể lên chồng hơn là có ba hướng dẫn thông thường ... –