2011-02-04 24 views
11

Tôi đã đọc về sự phát triển liên tục của Mozilla về JavaScript, thông qua phiên bản 1.8.5: https://developer.mozilla.org/en/JavaScript.Sự tương quan giữa ECMAScript 5 và JavaScript 1.8.5 dưới dạng các tính năng ngôn ngữ là gì?

Câu hỏi của tôi là: Sự tương quan giữa JavaScript 1.8.5+ và ECMAScript 5+ về các tính năng ngôn ngữ là gì? Bất kỳ cơ hội nào các tính năng JavaScript mới của Mozilla (như máy phát điện, sự hiểu biết mảng, vv) sẽ trở thành một phần của ECMAScript?

Tôi chỉ muốn xử lý xem liệu nó có đáng học JavaScript 1.8.5 tính năng hay không và tôi nên quên JS 1.8.5 và tập trung vào việc học/làm mới Tính năng ECMAScript 5.

FYI: Mozilla nói về cách họ đang lập kế hoạch để đưa JavaScript vào phù hợp với ECMAScript 5 ở đây: https://developer.mozilla.org/En/JavaScript/ECMAScript_5_support_in_Mozilla

+3

Tôi cho một không muốn pythonisation mà mozilla đang mang đến. – Raynos

+1

Câu hỏi lớn của tôi là khi Javascript cuối cùng sẽ có thể xử lý Unicode trong các regex của nó, ít nhất là lên đến [Mức 1 tuân thủ với UTS # 18: “Hỗ trợ Unicode cơ bản”] (http://unicode.org/reports/ tr18/# Basic_Unicode_Support). Nó tương đương với vô dụng trong thế giới hậu ASCII ngày nay mà không có nó. – tchrist

+0

Tôi không, tôi nghĩ rằng một số tính năng rất tuyệt, nhưng nó quá mức cần thiết, pythonization là một cách hay để đặt nó. Điều duy nhất tôi muốn là khả năng khai báo các loại nếu tôi chọn (như ActionScript) –

Trả lời

12

JavaScript 1.8.5 là việc triển khai ECMAScript của Mozilla với các tính năng bổ sung. Đó là một phần mở rộng của đặc tả ECMAScript (và các triển khai hiện tại như IE, Chrome và Opera). Mozilla đẩy các tính năng mà nó thêm vào trình duyệt riêng của mình, họ có thể hoặc không thể đưa nó vào ECMA. Lưu ý rằng Mozilla là một thành viên của W3C và có một số người nói, nhưng tôi đoán là hầu hết các tính năng sẽ không làm được.

Bottom Line Đừng sử dụng nó, trừ khi bạn đang mã hóa một cái gì đó cụ thể để firefox, mở rộng FF, ứng dụng XUL, Rhino (Added Rhino nhờ @Raynos)

+1

Hoặc Tê giác! Hoặc bất kỳ thứ gì khác chạy trên trình diễn JavaScript mozilla. – Raynos

+0

Thật tuyệt. Tôi thực sự nghĩ rằng Rhino đã bị mắc kẹt với một phiên bản cũ hơn nhiều của JavaScript, nhưng vâng, bạn thậm chí có thể chọn phiên bản để sử dụng, nó hỗ trợ lên đến 1,7 hiện tại https://developer.mozilla.org/en/Rhino_Shell –

+0

Cảm ơn đơn giản câu trả lời. –

0

Tôi nghĩ ECMAScript là "tiêu chuẩn", giống như một kế hoạch chi tiết, và javascript là ngôn ngữ thực tế nó là dựa trên. Loại như thế nào w3c có tiêu chuẩn của họ và sau đó mọi người thực hiện (hoặc không) làm cho công cụ dựng hình dựa tắt nó. Vì vậy, về cơ bản để trả lời câu hỏi của bạn, hãy nhìn vào ECMAScript để xem sự đồng thuận là gì, javascript là "nghĩa vụ" để làm việc, nhưng bạn nên tập trung vào javascript, bởi vì đó là những gì bạn thực sự sẽ được mã hóa với.

3

Tập trung chắc chắn vào ES5. Vấn đề với các tính năng 1.7 & 1.8 là chúng thay đổi cú pháp của ngôn ngữ để bạn không thể biến chúng thành mã khác.

Bạn có thể mô phỏng tất cả các thuộc tính của đối tượng bằng ES5 nhưng bạn không thể mô phỏng từ khóa let. Trong các trình duyệt khác, các biểu thức khác nhau không phải là javascript hợp lệ.

Bạn phải từ bỏ việc bổ sung mã gốc là phần lớn ES5 đang thực hiện và thay đổi cú pháp javascript là 1.7& 1.8 đang thực hiện.

Có sử dụng cho 1.7 & 1.8 để phát triển cho nền tảng RHINO. Nhưng đối với trình duyệt javascript dính vào spec.

Phải thừa nhận rằng giá trị trả về nhiều giá trị là một tính năng khá gọn gàng. Có một bài tập mảng như thế sẽ được tốt đẹp

function() f { 
    return [1,2,3]; 
} 

[a,b,c] = f() 

Nhưng các tính năng khác là những thay đổi khá lớn đối với cú pháp và bạn chỉ có thể đẩy họ thông qua ECMAScript họ chỉ sẽ không đối phó với nó. Những thay đổi nhỏ như trên bạn có thể vào ES6 nhưng bạn sẽ phải đợi ít nhất một năm.

Vì vậy, thực tế không mong đợi việc học trả tiền trong một hoặc hai năm nếu có. Nhiều khả năng nó sẽ không trả hết. Hãy xem các thư viện như underscore.js có thể xác định các phương pháp tiện ích chức năng phổ biến cho bạn.

+0

Các regex của nó có hỗ trợ Unicode cơ bản cho mỗi UTS # 18 không ?? – tchrist

+0

Có thể thay đổi cú pháp của ngôn ngữ, bằng cách giới thiệu một trình phân tích/trình tạo cú pháp để biên dịch mã xuống JavaScript bình thường. Xem CoffeeScript - http://jashkenas.github.com/coffee-script/. Đây sẽ là một phương thức hỗ trợ JS 1.8.5 có hiệu lực (mặc dù rất tốn thời gian). –

+0

@tchrist Tôi không có đầu mối. – Raynos

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