Tìm kiếm trang web

javascript - ECMAScript 6 không hoạt động mặc dù JS thử nghiệm đã được bật


Tôi có phiên bản Chrome mới nhất (45 và cả Chrome Canary đang ở phiên bản 47), cả hai đều bật cờ JavaScript Thí nghiệm. Tôi muốn sử dụng ECMAScript 6, nhưng nó không hoạt động. Tôi không biết tại sao. Có mẹo nào hoặc cờ khác cũng phải được bật không?

Mỗi từ khóa được giữ lại của ECMAScript 6 (như import, class hoặc bất cứ gì) gây ra một lỗi “Uncaught SyntaxError: Unexpected reserved word ” trong Chrome 45 và một lỗi “Uncaught SyntaxError: Unexpected token import ” trong Chrome Canary.

Tôi đã hỏi điều này vài tháng trước mà không nhận được câu trả lời nào ngoài một "có thể trùng lặp" với Sử dụng ECMAScript 6, nhưng nó không giải quyết vấn đề của tôi.

Tôi muốn sử dụng các module, vì tôi thích các module ECMAScript hơn là sử dụng require từ CommonJS. Và tôi cũng thích cú pháp ngọt ngào của các lớp — mã trông đẹp hơn.

Câu trả lời #1

Các module vẫn chưa được các trình duyệt hỗ trợ một cách nguyên bản. Bạn sẽ cần sử dụng một trình biên dịch như Traceur hoặc Babel. Hãy xem qua một trong những mục sau để giúp bạn bắt đầu:

  • Hãy chọn các module ES6 ngay hôm nay!
  • ES6 Sâu: Sử dụng ES6 ngày nay với Babel và Broccoli
  • Viết ES6 phía khách hàng với webpack

Về các lớp, bạn có thể sử dụng chúng một cách tự nhiên mà không cần phải thông qua trình dịch. Bạn có thể kiểm tra bảng tương thích tại đây để xem trình duyệt nào hiện nay hỗ trợ các lớp một cách tự nhiên:

https://kangax.github.io/compat-table/es6/

Tính đến thời điểm hiện tại, bạn có thể thấy rằng phần lớn trình duyệt vẫn chưa hỗ trợ lớp (classes) một cách nguyên bản. Tuy nhiên, nếu bạn đang sử dụng Babel hoặc Traceur, điều đó không nên là một vấn đề.

Câu trả lời #2

Thêm type="module" vào thẻ script. Điều đó nên giải quyết vấn đề của bạn.