Những trình duyệt nào hiện hỗ trợ từ khóa 'let' của JavaScript?


80

Tôi đang phát triển một ứng dụng và không phải lo lắng về Internet Explorer và đang xem xét một số tính năng có trong các trình duyệt loại A + không có trong Internet Explorer1.

Một trong những tính năng mà tôi muốn sử dụng là từ khóa let của JavaScript

Tôi dường như không thể nhận được bất kỳ của 'let' ví dụ của mình để làm việc trong Firefox 3.6 ( User-Agent chuỗi: Mozilla / 5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.9.2) Gecko / 20.100.115 Firefox / 3.6 (.NET CLR 3.5.30729)). Tôi nhận được SyntaxError: missing ; before statementkhi thực hiện let foo = "bar".

Vậy, những trình duyệt nào hỗ trợ từ khóa let? (Hay tôi đang làm gì đó sai?)


Mặc dù và hiểu và đồng ý rằng việc bạn không cần quan tâm đến nếu nó hoạt động trên IE, bạn nên cân nhắc rằng từ khóa "let" chỉ dành cho mozilla, vì vậy ngay cả khi bạn nói "IE không hỗ trợ nó" thì vẫn cách nói, sẽ là "chỉ mozilla hỗ trợ nó". Giống như việc chúng ta tránh các thẻ hoặc từ khóa chỉ dành cho IE, bạn nên tránh và chỉ các từ khóa *.
WhyNotHugo,

Hugo, bạn cần lưu ý rằng HTML, CSS, JS không phải là nền tảng chỉ dành cho web nữa. Mã xảy ra là mã sẽ không bao giờ chạy trong bất kỳ phiên bản IE nào hoặc bất kỳ trình duyệt web nào , vì vấn đề đó. :-)
David Murdoch,

Apple đang cố gắng làm cái quái gì vậy .. đó là năm 2015 và không có dấu hiệu lethỗ trợ trong trình duyệt thảm hại của họ.
Salman von Abbas

3
XIN LƯU Ý Nhiều câu trả lời cũ hơn (bao gồm cả câu trả lời được chấp nhận) đã bị các sự kiện vượt qua. Tất cả các trình duyệt cập nhật chính đều hỗ trợ từ khóa ES2015 (hay còn gọi là "ES6") let, nhưng tính đến thời điểm này, hỗ trợ viết khá mới trong một số vòng kết nối (ví dụ: chỉ iOS 10 Safari).
TJ Crowder

Tôi khuyên bạn nên thay đổi câu trả lời được chấp nhận của bạn thành một trong những câu trả lời hiện đúng. Đúng, cách hiện được chấp nhận là đúng vào thời điểm đó, nhưng nó đã không chính xác trong vài năm nay và mục đích của SO là một kho lưu trữ kiến ​​thức, không phải một kho lưu trữ lịch sử. :-)
TJ Crowder

Câu trả lời:


56

EDIT : letconstđược hỗ trợ bởi tất cả các trình duyệt hiện đại và là một phần của đặc điểm kỹ thuật ECMAScript 2015 (ES6) .

Về cơ bản, nếu bạn không cần hỗ trợ bất kỳ thứ gì bên dưới IE11, letconstcó thể sử dụng an toàn ngày nay.

Trên IE11, có một vấn đề nhỏ là letkhi được sử dụng với forcác vòng lặp, biến không bị ràng buộc với forkhối như bạn mong đợi, nó hoạt động như var...

Xem thêm: hỗ trợ letconst .


Câu trả lời cũ và lỗi thời từ năm 2010: Những phần mở rộng đó không phải là Tiêu chuẩn ECMA, chúng chỉ được hỗ trợ bởi việc triển khai Mozilla.

Trên môi trường trình duyệt, bạn nên bao gồm số phiên bản JavaScript trong scriptthẻ của mình để sử dụng:

<script type="application/javascript;version=1.7">  
  var x = 5;
  var y = 0;

  let (x = x+10, y = 12) {
    alert(x+y + "\n");
  }

  alert((x + y) + "\n");
</script>

1
Tốt; Tôi vừa cập nhật câu trả lời của mình và sau đó phát hiện ra rằng bạn đã đánh bại tôi trong một phút;). +1
Harmen

1
Cảm ơn, tôi đang sử dụng '<script> </script>' của HTML 5 mà không có phần đính kèm kiểu.
David Murdoch

19
Lưu ý rằng các lettừ khóa bây giờ trong 6 (dự thảo) tiêu chuẩn ECMAScript.
Nico Burns

3
Có thể được bật trong Chrome 19+ qua cờ "Tính năng Javascript thử nghiệm" và trong node.js bằng cách sử dụng --harmony.
Salman von Abbas

2
;version=1.7vẫn cần thiết trong Firefox? Tôi đã thử lettrong bảng điều khiển và nó hoạt động.
sam

31

Tính đến tháng 4 năm 2017:

  • Tất cả các trình duyệt chính được cập nhật như Chrome, Firefox và Edge đều hỗ trợ từ khóa ES2015 (còn gọi là "ES6") let.

  • iOS Safari không hỗ trợ letcho đến OS 10 (ví dụ: OS 9 thì không).

  • Một số trình duyệt cũ hơn, chẳng hạn như IE9-IE11, hỗ trợ phiên bản đầu của letnhưng không hỗ trợ ngữ nghĩa được xác định bởi ES2015 (đặc biệt liên quan đến khai báo trong tiêu đề của forvòng lặp). Vì vậy, nó không phải là một lỗi cú pháp và nó có khai báo biến, nhưng nó không hoạt động theo cách mà nó phải làm. Ví dụ: trong một triển khai đúng, các bản ghi sau đây 0, 1 và 2; trên IE9-IE11, nó ghi nhật ký 3, 3, 3:

  • Các trình duyệt lỗi thời như IE8 hoàn toàn không hỗ trợ nó.


1
Một câu trả lời hữu ích: +1.
MWiesner

25

Có hỗ trợ một phần trong Internet Explorer 11 ( forphạm vi không chính xác ) và hỗ trợ đầy đủ trong tất cả các trình duyệt hiện tại ( bảng tương thích ECMAScript 6: let ).


1
Mặc dù IE11 "hỗ trợ" lettừ khóa (ở chỗ nó không ném a SyntaxError), việc triển khai nó không tuân theo thông số kỹ thuật - biến không được phạm vi khối đúng cách. (cũng lưu ý rằng không có và sẽ không bao giờ có bất kỳ trình duyệt IE trong quá khứ 11)
CertainPerformance

12

Internet Explorer và Opera không hỗ trợ lettrên bất kỳ phiên bản trình duyệt nào, Firefox kể từ phiên bản 2.0 và Safari kể từ 3.2.

Xem bảng phiên bản JavaScript này trên Wikipedia.

Tôi vừa phát hiện ra rằng bạn cần xác định xem bạn có sử dụng JavaScript 1.7 hay không. Vì vậy, mã của bạn sẽ là:

<script type="application/javascript;version=1.7"> ... </script>

Có vẻ như thông số phiên bản này hiện không được dùng nữa. Nếu tôi cố gắng chỉ định phiên bản, Chrome không tải javascript đó.
Jay Shah


3

Rất nhiều thời gian đã trôi qua kể từ khi câu hỏi này lần đầu tiên được hỏi: các từ khóa 'let' và 'const' đã được giới thiệu trong ECMAScript 2015 (ES6). Tìm kiếm 'let' hoặc 'const' trong bảng tương thích ES6 tuyệt vời này: https://kangax.github.io/compat-table/es6/


2

Chỉ là bản cập nhật: Chrome hiện hỗ trợ letnhưng chỉ khi bạn khai báo "use strict"; chỉ thị.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.