Bạn đang xem : phiên bản mới nhất của ecmascript

ECMA-262, ấn bản lần thứ 13, tháng 6 năm 2022
Đặc tả ngôn ngữ ECMAScript® 2022

Giới thiệu

Tiêu chuẩn Ecma này xác định Ngôn ngữ ECMAScript 2022. Nó là
ấn bản thứ mười ba của Đặc tả ngôn ngữ ECMAScript. Từ
xuất bản lần đầu tiên vào năm 1997, ECMAScript đã trở thành một trong những
ngôn ngữ lập trình đa năng được sử dụng rộng rãi nhất trên thế giới.
Nó được biết đến nhiều nhất là ngôn ngữ được nhúng trong các trình duyệt web nhưng cũng có
đã được chấp nhận rộng rãi cho máy chủ và các ứng dụng nhúng.

ECMAScript dựa trên một số công nghệ ban đầu, hầu hết
nổi tiếng là JavaScript (Netscape) và JScript (Microsoft). Các
ngôn ngữ được phát minh bởi Brendan Eich tại Netscape và lần đầu tiên xuất hiện trong
trình duyệt Navigator 2.0 của công ty đó. Nó đã xuất hiện trong tất cả các lần tiếp theo
các trình duyệt từ Netscape và trong tất cả các trình duyệt từ Microsoft bắt đầu bằng
Internet Explorer 3.0.

Sự phát triển của Đặc tả ngôn ngữ ECMAScript bắt đầu trong
Tháng 11 năm 1996. Phiên bản đầu tiên của Tiêu chuẩn Ecma này đã được thông qua bởi
Đại hội đồng Ecma tháng 6 năm 1997.

Tiêu chuẩn Ecma đó đã được đệ trình lên ISO / IEC JTC 1 để thông qua
theo thủ tục nhanh chóng và được phê duyệt theo tiêu chuẩn quốc tế
ISO / IEC 16262, vào tháng 4 năm 1998. Đại hội đồng Ecma tháng 6 năm 1998
đã phê duyệt phiên bản thứ hai của ECMA-262 để giữ cho nó hoàn toàn phù hợp với
ISO / IEC 16262. Những thay đổi giữa ấn bản đầu tiên và ấn bản thứ hai là
bản chất là bài xã luận.

Phiên bản thứ ba của Tiêu chuẩn đã giới thiệu
biểu thức, xử lý chuỗi tốt hơn, câu lệnh điều khiển mới, try / catch
xử lý ngoại lệ, định nghĩa chặt chẽ hơn về lỗi, định dạng cho số
đầu ra và những thay đổi nhỏ để dự đoán sự phát triển ngôn ngữ trong tương lai. Các
phiên bản thứ ba của tiêu chuẩn ECMAScript đã được Ecma thông qua
Đại hội đồng tháng 12 năm 1999 và được công bố là ISO / IEC 16262: 2002 tại
Tháng 6 năm 2002.

Sau khi xuất bản ấn bản thứ ba, ECMAScript đã đạt được số lượng lớn
áp dụng kết hợp với World Wide Web nơi nó đã trở thành
ngôn ngữ lập trình được hỗ trợ bởi tất cả các trình duyệt web.
Công việc quan trọng đã được thực hiện để phát triển phiên bản thứ tư của ECMAScript.
Tuy nhiên, tác phẩm đó đã không được hoàn thành và không được xuất bản là tác phẩm thứ tư
ấn bản của ECMAScript nhưng một số trong số đó đã được tích hợp vào
phát triển phiên bản thứ sáu.

Ấn bản thứ năm của ECMAScript (được xuất bản là ECMA-262 thứ 5
ấn bản) các cách diễn giải trên thực tế được hệ thống hóa về ngôn ngữ
đặc điểm kỹ thuật đã trở nên phổ biến giữa các triển khai trình duyệt và
hỗ trợ thêm cho các tính năng mới đã xuất hiện kể từ khi xuất bản
ấn bản thứ ba. Các tính năng đó bao gồm thuộc tính của người truy cập ,
tạo phản xạ và kiểm tra các đối tượng, điều khiển chương trình của
thuộc tính thuộc tính, chức năng thao tác mảng bổ sung, hỗ trợ
cho định dạng mã hóa đối tượng JSON và một chế độ nghiêm ngặt cung cấp
nâng cao kiểm tra lỗi và bảo mật chương trình. Lần xuất bản thứ năm là
được thông qua bởi Đại hội đồng Ecma vào tháng 12 năm 2009.

Phiên bản thứ năm đã được đệ trình lên ISO / IEC JTC 1 để được thông qua theo
thủ tục nhanh chóng và được phê duyệt theo tiêu chuẩn quốc tế
ISO / IEC 16262: 2011. Phiên bản 5.1 của Tiêu chuẩn ECMAScript được kết hợp
sửa chữa nhỏ và là văn bản giống như ISO / IEC 16262: 2011. 5.1
Phiên bản đã được Đại hội đồng Ecma thông qua vào tháng 6 năm 2011.

Sự phát triển tập trung của ấn bản thứ sáu bắt đầu vào năm 2009,
ấn bản thứ năm đang được chuẩn bị để xuất bản. Tuy nhiên, đây là
trước đó là thử nghiệm quan trọng và thiết kế nâng cao ngôn ngữ
những nỗ lực có niên đại cho đến khi xuất bản ấn bản thứ ba vào năm 1999. Trong một
rất thực tế, việc hoàn thành ấn bản thứ sáu là đỉnh cao
của một nỗ lực mười lăm năm. Các mục tiêu cho ấn bản này bao gồm việc cung cấp
hỗ trợ tốt hơn cho các ứng dụng lớn, tạo thư viện và sử dụng
ECMAScript làm mục tiêu biên dịch cho các ngôn ngữ khác. Một số của nó
các cải tiến chính bao gồm các mô-đun, khai báo lớp, khối từ vựng
xác định phạm vi, trình vòng lặp và trình tạo, hứa hẹn cho không đồng bộ
lập trình, cấu trúc mẫu và lệnh gọi đuôi thích hợp. Các
Thư viện tích hợp sẵn ECMAScript được mở rộng để hỗ trợ thêm dữ liệu
trừu tượng hóa bao gồm bản đồ, tập hợp và mảng giá trị số nhị phân
cũng như hỗ trợ bổ sung cho các ký tự bổ sung Unicode trong
chuỗi và biểu thức chính quy. Tích hợp sẵn cũng có thể mở rộng được
thông qua phân lớp. Ấn bản thứ sáu cung cấp nền tảng cho
cải tiến ngôn ngữ và thư viện gia tăng. Lần xuất bản thứ sáu là
được thông qua bởi Đại hội đồng tháng 6 năm 2015.

ECMAScript 2016 là ấn bản ECMAScript đầu tiên được phát hành theo
Nhịp điệu phát hành hàng năm mới của Ecma TC39 và quy trình phát triển mở. Một
tài liệu nguồn thuần văn bản được xây dựng từ nguồn ECMAScript 2015
tài liệu để làm cơ sở cho sự phát triển hơn nữa hoàn toàn về
GitHub. Qua năm phát triển của tiêu chuẩn này, hàng trăm lần kéo
các yêu cầu và vấn đề đã được đệ trình đại diện cho hàng nghìn bản sửa lỗi,
các bản sửa lỗi biên tập và các cải tiến khác. Ngoài ra, nhiều phần mềm
các công cụ đã được phát triển để hỗ trợ nỗ lực này bao gồm Ecmarkup,
Ecmarkdown và Grammarkdown. ES2016 cũng bao gồm hỗ trợ cho một
toán tử lũy thừa và thêm một phương thức mới vào Array.prototype được gọi là include .

ECMAScript 2017 đã giới thiệu Chức năng không đồng bộ, Bộ nhớ dùng chung và
Atomics cùng với các cải tiến về ngôn ngữ và thư viện nhỏ hơn, sửa lỗi,
và cập nhật biên tập. Các chức năng không đồng bộ cải thiện sự không đồng bộ
kinh nghiệm lập trình bằng cách cung cấp cú pháp để trả về lời hứa
chức năng. Bộ nhớ dùng chung và nguyên tử giới thiệu mẫu bộ nhớ mới cho phép nhiều tác nhân
các chương trình giao tiếp bằng cách sử dụng các hoạt động nguyên tử đảm bảo
thứ tự thực thi được xác định rõ ràng ngay cả trên các CPU song song. Nó cũng bao gồm mới
các phương thức tĩnh trên Object: Object.values ​​, Object.entries Object.getOwnPropertyDescriptors .

ECMAScript 2018 đã giới thiệu hỗ trợ lặp lại không đồng bộ qua
giao thức AsyncIterator và trình tạo không đồng bộ. Nó cũng bao gồm bốn
các tính năng biểu thức chính quy mới: cờ dotAll , được đặt tên
nhóm nắm bắt, thoát thuộc tính Unicode và xác nhận xem xét lại.
Cuối cùng, nó bao gồm phần còn lại của đối tượng và thuộc tính trải rộng.

ECMAScript 2019 đã giới thiệu một số hàm tích hợp mới: flat flatMap trên Array.prototype để làm phẳng mảng, Object .fromEntries để chuyển trực tiếp giá trị trả về của Object.entries thành Đối tượng mới và trimStart trimEnd trên String.prototype như những lựa chọn thay thế được đặt tên tốt hơn cho String.prototype.trimLeft trimRight được triển khai rộng rãi nhưng không chuẩn
tích hợp sẵn. Ngoài ra, nó còn bao gồm một số cập nhật nhỏ về cú pháp và
ngữ nghĩa. Cú pháp cập nhật bao gồm các tham số ràng buộc bắt tùy chọn và
cho phép U + 2028 (LINE SEPARATOR) và U + 2029 (PARAGRAPH SEPARATOR) trong
chuỗi ký tự để căn chỉnh với JSON. Các bản cập nhật khác bao gồm yêu cầu
rằng Array.prototype.sort là một sắp xếp ổn định, yêu cầu JSON.stringify trả về UTF-8 được định dạng tốt bất kể đầu vào là gì và làm rõ Function.prototype. toString bằng cách yêu cầu nó trả về văn bản nguồn gốc tương ứng hoặc trình giữ chỗ chuẩn.

ECMAScript 2020, ấn bản thứ 11, đã giới thiệu phương thức matchAll cho Chuỗi, để tạo một trình lặp cho tất cả các đối tượng khớp được tạo bởi một biểu thức chính quy toàn cục; import () , một cú pháp để nhập không đồng bộ Mô-đun với bộ định nghĩa động; BigInt , một số nguyên thủy mới để làm việc với các số nguyên chính xác tùy ý ; Promise.allSettled , một tổ hợp Promise mới không gây đoản mạch; globalThis , một cách phổ biến để truy cập giá trị this toàn cầu; chuyên dụng export * dưới dạng ns từ cú pháp 'module' để sử dụng trong các mô-đun; tăng tiêu chuẩn hóa thứ tự liệt kê for-in ; import.meta , một máy chủ lưu trữ -dân số
đối tượng có sẵn trong Mô-đun có thể chứa thông tin theo ngữ cảnh
về Học phần; cũng như thêm hai tính năng cú pháp mới để cải thiện
làm việc với các giá trị “nullish” ( null hoặc undefined ):
nullish coescing, một toán tử lựa chọn giá trị; và chuỗi tùy chọn,
quyền truy cập thuộc tính và toán tử lệnh gọi hàm gây ngắn mạch nếu
giá trị để truy cập / gọi là vô hiệu.

Xem Thêm  Mã HTML cho các ký hiệu chung - mã html cho các ký hiệu

ECMAScript 2021, ấn bản thứ 12, đã giới thiệu phương thức ReplaceAll cho Chuỗi; Promise.any , bộ tổ hợp Promise gây ngắn mạch khi giá trị đầu vào được đáp ứng; AggregateError , một loại Lỗi mới để biểu thị nhiều lỗi cùng một lúc; toán tử gán logic ( ?? = , & amp; & amp; = , || = ); WeakRef , để tham chiếu đến một đối tượng đích mà không bảo vệ nó khỏi bộ sưu tập rác và FinalizationRegistry ,
để quản lý việc đăng ký và hủy đăng ký các hoạt động dọn dẹp
thực hiện khi đối tượng đích được thu gom rác; dải phân cách cho
ký tự số ( 1_000 ); và Array.prototype.sort được hoàn thiện chính xác hơn, giảm số lượng các trường hợp dẫn đến thứ tự sắp xếp được xác định bởi việc triển khai.

ECMAScript 2022, ấn bản thứ 13, đã giới thiệu await cấp cao nhất, cho phép từ khóa
được sử dụng ở cấp cao nhất của các mô-đun; các phần tử lớp mới: công khai và
trường cá thể riêng, trường tĩnh công khai và riêng tư, riêng tư
các phương thức phiên bản và trình truy cập cũng như các phương thức tĩnh riêng tư và
người truy cập; các khối tĩnh bên trong các lớp, để thực hiện đánh giá mỗi lớp
sự khởi tạo; cú pháp #x trong obj , để kiểm tra sự hiện diện của các trường riêng tư trên các đối tượng; các chỉ số đối sánh biểu thức chính quy thông qua cờ / d , cung cấp các chỉ số bắt đầu và kết thúc cho các chuỗi con đã so khớp; thuộc tính nguyên nhân trên các đối tượng Error , có thể được sử dụng để ghi lại một chuỗi nhân quả trong các lỗi; phương thức at cho Chuỗi, Mảng và TypedArrays, cho phép lập chỉ mục tương đối; và Object.hasOwn , một giải pháp thay thế thuận tiện cho Object.prototype.hasOwnProperty .

Hàng chục cá nhân đại diện cho nhiều tổ chức đã thực hiện
những đóng góp rất đáng kể trong Ecma TC39 cho sự phát triển của
ấn bản này và các ấn bản trước. Ngoài ra, một cộng đồng sôi động
đã xuất hiện hỗ trợ các nỗ lực ECMAScript của TC39. Cộng đồng này có
đã xem xét nhiều bản nháp, gửi hàng nghìn báo cáo lỗi, thực hiện
thử nghiệm triển khai, bộ thử nghiệm đóng góp và giáo dục
cộng đồng nhà phát triển trên toàn thế giới về ECMAScript. Tiếc là nó
không thể xác định và thừa nhận mọi cá nhân và tổ chức
đã đóng góp vào nỗ lực này.

Allen Wirfs-Brock
ECMA-262, Trình chỉnh sửa dự án, Phiên bản thứ 6

Brian Terlson
ECMA-262, Trình biên tập dự án, Phiên bản từ thứ 7 đến thứ 10

Jordan Harband
ECMA-262, Trình biên tập dự án, Phiên bản thứ 10 đến 12

1

Phạm vi

Tiêu chuẩn này xác định ngôn ngữ lập trình đa năng ECMAScript 2022.

2

Sự phù hợp

Việc triển khai ECMAScript tuân thủ phải cung cấp và hỗ trợ
tất cả các kiểu, giá trị, đối tượng, thuộc tính, hàm và chương trình
cú pháp và ngữ nghĩa được mô tả trong thông số kỹ thuật này.

Việc triển khai ECMAScript tuân thủ phải diễn giải nguồn
nhập văn bản phù hợp với phiên bản mới nhất của Unicode
Tiêu chuẩn và ISO / IEC 10646.

Việc triển khai ECMAScript tuân thủ cung cấp
giao diện lập trình ứng dụng (API) hỗ trợ các chương trình cần
để thích ứng với các quy ước ngôn ngữ và văn hóa được sử dụng bởi các
ngôn ngữ của con người và các quốc gia phải triển khai giao diện được xác định bởi
phiên bản gần đây nhất của ECMA-402 tương thích với
đặc điểm kỹ thuật.

Việc triển khai ECMAScript tuân thủ có thể cung cấp thêm
kiểu, giá trị, đối tượng, thuộc tính và chức năng ngoài những thứ được mô tả
trong đặc điểm kỹ thuật này. Đặc biệt, việc triển khai tuân thủ
ECMAScript có thể cung cấp các thuộc tính không được mô tả trong đặc điểm kỹ thuật này,
và các giá trị cho các thuộc tính đó, cho các đối tượng được mô tả trong
đặc điểm kỹ thuật.

Việc triển khai ECMAScript tuân thủ có thể hỗ trợ chương trình và
cú pháp biểu thức chính quy không được mô tả trong đặc tả này. Trong
đặc biệt, việc triển khai phù hợp ECMAScript có thể hỗ trợ
cú pháp chương trình sử dụng mọi “từ dành riêng cho tương lai ” được ghi trong điều khoản phụ 12.6.2 của đặc tả này.

Việc triển khai tuân thủ ECMAScript không được triển khai bất kỳ tiện ích mở rộng nào được liệt kê là Tiện ích mở rộng bị cấm trong điều khoản phụ 17.1 .

Việc triển khai tuân thủ ECMAScript không được xác định lại bất kỳ cơ sở nào không được xác định về việc triển khai, ước tính thực hiện hoặc do máy chủ lưu trữ xác định .

Một triển khai phù hợp của ECMAScript có thể chọn triển khai hoặc không triển khai Tùy chọn quy phạm
các điều khoản phụ. Nếu bất kỳ hành vi Tùy chọn Quy chuẩn nào được thực hiện, tất cả
hành vi trong mệnh đề Tùy chọn Quy phạm có chứa phải
được thực hiện. Một điều khoản Tùy chọn Quy chuẩn được biểu thị trong điều này
đặc điểm kỹ thuật với các từ “Tùy chọn tiêu chuẩn” trong một hộp màu, như
hiển thị bên dưới.

Tùy chọn quy định

2.1

Ví dụ về Tiêu đề Điều khoản Tùy chọn Quy định

Nội dung mệnh đề mẫu.

Việc triển khai ECMAScript tuân thủ phải triển khai Kế thừa
các điều khoản phụ, trừ khi chúng cũng được đánh dấu là Tùy chọn Quy phạm. Tất cả
các tính năng và hành vi ngôn ngữ được chỉ định trong các điều khoản phụ Kế thừa
có một hoặc nhiều đặc điểm không mong muốn. Tuy nhiên, họ vẫn tiếp tục
việc sử dụng trong các ứng dụng hiện có ngăn cản việc xóa chúng khỏi điều này
sự chỉ rõ. Những tính năng này không được coi là một phần của cốt lõi
Ngôn ngữ ECMAScript. Lập trình viên không nên sử dụng hoặc giả định sự tồn tại của
các tính năng và hành vi này khi viết mã ECMAScript mới.

Kế thừa

2.2

Tiêu đề Điều khoản Kế thừa Ví dụ

Nội dung mệnh đề mẫu.

Tùy chọn quy phạm , Kế thừa

2.3

Ví dụ về Tiêu đề của Điều khoản Tùy chọn Quy phạm Kế thừa

Nội dung mệnh đề mẫu.

3

Tài liệu tham khảo quy phạm

Các tài liệu tham khảo sau đây là không thể thiếu cho
ứng dụng của tài liệu này. Đối với các tài liệu tham khảo ngày tháng, chỉ phiên bản
được trích dẫn áp dụng. Đối với các tài liệu tham khảo không ghi ngày tháng, phiên bản mới nhất của
tài liệu tham chiếu (bao gồm mọi sửa đổi) được áp dụng.

ISO / IEC 10646, cùng với các sửa đổi bổ sung và corrigenda, hoặc kế thừa

ECMA-402,.
https://ecma-international.org/publications/standards/Ecma-402.htm

ECMA-404,.
https://ecma-international.org/publications/standards/Ecma-404.htm

28

Suy ngẫm

28.1

Đối tượng phản chiếu

Đối tượng Phản ánh:

  • là% Reflect%.
  • là giá trị ban đầu của thuộc tính “Reflect” của global object .
  • là một vật thể thông thường .
  • có một vị trí nội bộ [[Prototype]] có giá trị là % Object.prototype% .
  • không phải là một đối tượng hàm .
  • không có phương thức bên trong [[Construct]]; nó không thể được sử dụng như một constructor với toán tử new .
  • không có phương thức [[Gọi]] nội bộ; nó không thể được gọi như một hàm.

28.1.1

Reflect.apply (target, thisArgument, objectsList)

Khi hàm apply được gọi với đối số target, thisArgument, và objectsList, các bước sau được thực hiện:

  1. 1.

    Nếu IsCallable (target) là false, hãy đưa ra ngoại lệ TypeError.

  2. 2.

    Hãy để args được? CreateListFromArrayLike (objectsList).

  3. 3.

    Thực hiện PreparationForTailCall ().

  4. 4.

    Trở lại? Gọi (target, thisArgument, args).

28.1.2

Reflect.construct (target, objectsList [, newTarget])

Khi hàm construct được gọi với đối số target, objectsList và newTarget, các bước sau được thực hiện:

  1. 1.

    Nếu IsConstructor (target) là false, hãy đưa ra ngoại lệ TypeError.

  2. 2.

    Nếu không có newTarget, hãy đặt newTarget thành mục tiêu.

  3. 3.

    Nếu không, nếu IsConstructor (newTarget) là false, hãy đưa ra một ngoại lệ TypeError.

  4. 4.

    Hãy để args được? CreateListFromArrayLike (objectsList).

  5. 5.

    Trở lại? Cấu trúc (target, args, newTarget).

28.1.3

Reflect.defineProperty (target, propertyKey, thuộc tính)

Khi hàm defineProperty được gọi với các đối số target, propertyKey và thuộc tính, các bước sau được thực hiện:

  1. 1.

    Nếu Loại (đích) không phải là Đối tượng, hãy đưa ra ngoại lệ TypeError.

  2. 2.

    Hãy để chìa khóa? ToPropertyKey (propertyKey).

  3. 3.

    Hãy để desc là? ToPropertyDescriptor (thuộc tính).

  4. 4.

    Trở lại?

    target. [[DefineOwnProperty]]

    (key, desc).

28.1.4

Reflect.deleteProperty (target, propertyKey)

Khi hàm deleteProperty được gọi với đối số target và propertyKey, các bước sau được thực hiện:

  1. 1.

    Nếu Loại (target) không phải là Đối tượng, hãy đưa ra một ngoại lệ TypeError.

  2. 2.

    Hãy để chìa khóa? ToPropertyKey (propertyKey).

  3. 3.

    Trở lại?

    target. [[Delete]]

    (key).

28.1.5

Reflect.get (target, propertyKey [, receiver])

Khi hàm get được gọi với các đối số target, propertyKey và receiver, các bước sau được thực hiện:

  1. 1.

    Nếu Loại (đích) không phải là Đối tượng, hãy đưa ra ngoại lệ TypeError.

  2. 2.

    Hãy để chìa khóa? ToPropertyKey (propertyKey).

  3. 3.

    Nếu không có đầu thu thì

    1. a.

      Đặt máy thu thành mục tiêu.

  4. 4.

    Trở lại?

    target. [[Get]]

    (key, receiver).

28.1.6

Reflect.getOwnPropertyDescriptor (target, propertyKey)

Khi hàm getOwnPropertyDescriptor được gọi với đối số target và propertyKey, các bước sau được thực hiện:

  1. 1.

    Nếu Loại (đích) không phải là Đối tượng, hãy đưa ra ngoại lệ TypeError.

  2. 2.

    Hãy để chìa khóa? ToPropertyKey (propertyKey).

  3. 3.

    Hãy để desc là?

    target. [[GetOwnProperty]]

    (key).

  4. 4.

    Trả lại FromPropertyDescriptor (mô tả).

28.1.7

Reflect.getPrototypeOf (target)

Khi hàm getPrototypeOf được gọi với đích đối số, các bước sau được thực hiện:

  1. 1.

    Nếu Loại (đích) không phải là Đối tượng, hãy đưa ra ngoại lệ TypeError.

  2. 2.

    Trở lại?

    target. [[GetPrototypeOf]] ()

    .

28.1.8

Reflect.has (target, propertyKey)

Khi hàm has được gọi với các đối số target và propertyKey, các bước sau được thực hiện:

  1. 1.

    Nếu Loại (đích) không phải là Đối tượng, hãy đưa ra ngoại lệ TypeError.

  2. 2.

    Hãy để chìa khóa? ToPropertyKey (propertyKey).

  3. 3.

    Trở lại?

    target. [[HasProperty]]

    (key).

28.1.9

Reflect.isExtensible (target)

Khi hàm isExtensible được gọi với đích đối số, các bước sau được thực hiện:

  1. 1.

    Nếu Loại (đích) không phải là Đối tượng, hãy đưa ra ngoại lệ TypeError.

  2. 2.

    Trở lại?

    target. [[IsExtensible]] ()

    .

28.1.10

Reflect.ownKeys (target)

Khi hàm ownKeys được gọi với mục tiêu đối số, các bước sau được thực hiện:

  1. 1.

    Nếu Loại (đích) không phải là Đối tượng, hãy đưa ra ngoại lệ TypeError.

  2. 2.

    Để chìa khóa?

    target. [[OwnPropertyKeys]] ()

    .

  3. 3.

    Quay lại CreateArrayFromList (các khóa).

28.1.11

Reflect.preventExtensions (target)

Khi hàm PreventExtensions được gọi với mục tiêu đối số, các bước sau được thực hiện:

  1. 1.

    Nếu Loại (đích) không phải là Đối tượng, hãy đưa ra ngoại lệ TypeError.

  2. 2.

    Trở lại?

    target. [[Ngăn mở rộng]] ()

    .

28.1.12

Reflect.set (target, propertyKey, V [, receiver])

Khi hàm set được gọi với các đối số target, V, propertyKey và receiver, các bước sau được thực hiện:

  1. 1.

    Nếu Loại (đích) không phải là Đối tượng, hãy đưa ra ngoại lệ TypeError.

  2. 2.

    Hãy để chìa khóa? ToPropertyKey (propertyKey).

  3. 3.

    Nếu không có đầu thu thì

    1. a.

      Đặt máy thu thành mục tiêu.

  4. 4.

    Trở lại?

    target. [[Set]]

    (key, V, receiver).

28.1.13

Reflect.setPrototypeOf (target, proto)

Khi hàm setPrototypeOf được gọi với đối số target và proto, các bước sau được thực hiện:

  1. 1.

    Nếu Loại (đích) không phải là Đối tượng, hãy đưa ra ngoại lệ TypeError.

  2. 2.

    Nếu Loại (proto) không phải là Đối tượng và proto không phải là rỗng, hãy đưa ra ngoại lệ TypeError.

  3. 3.

    Trở lại?

    target. [[SetPrototypeOf]]

    (proto).

28.1.14

Phản ánh [@@ toStringTag]

Giá trị ban đầu của thuộc tính @@ toStringTag là giá trị Chuỗi “Reflect”.

Thuộc tính này có các thuộc tính {[[Writes]]: false, [[Enumerable]]: false, [[Configurable]]: true}.

28.2

Đối tượng proxy

28.2.1

Trình tạo proxy

Proxy constructor :

  • là% Proxy%.
  • là giá trị ban đầu của thuộc tính “Proxy” của global object .
  • tạo và khởi tạo một đối tượng Proxy mới khi được gọi dưới dạng constructor .
  • không nhằm mục đích được gọi là một hàm và sẽ tạo ra một ngoại lệ khi được gọi theo cách đó.

28.2.1.1

Proxy (target, handler)

Khi Proxy được gọi với mục tiêu và trình xử lý đối số, nó sẽ thực hiện các bước sau:

  1. 1.

    Nếu NewTarget không được xác định, hãy đặt một ngoại lệ TypeError.

  2. 2.

    Trở lại? ProxyCreate (target, handler).

28.2.2

Thuộc tính của Proxy Constructor

Proxy constructor :

  • có một vị trí nội bộ [[Prototype]] có giá trị là % Function.prototype% .
  • không có thuộc tính “nguyên mẫu” vì các đối tượng Proxy không có vùng nội bộ [[Nguyên mẫu]] yêu cầu khởi tạo.
  • có các thuộc tính sau:

28.2.2.1

Proxy.revocable (target, handler)

Hàm Proxy.revocable được sử dụng để tạo đối tượng Proxy có thể thu hồi. Khi Proxy.revocable được gọi với mục tiêu và trình xử lý đối số, các bước sau được thực hiện:

  1. 1.

    Hãy để p? ProxyCreate (target, handler).

  2. 2.

    Hãy để revokerClosure là một Tóm tắt Tóm tắt mới, không có tham số nào không ghi lại gì và thực hiện các bước sau khi được gọi:

    1. a.

      Gọi F là đối tượng chức năng đang hoạt động .

    2. b.

      Gọi p là F. [[RevocableProxy]].

    3. c.

      Nếu p rỗng, trả về giá trị không xác định.

    4. d.

      Đặt F. [[RevocableProxy]] thành null.

    5. e.

      Khẳng định : p là một đối tượng Proxy.

    6. f.

      Đặt p. [[ProxyTarget]] thành null.

    7. g.

      Đặt p. [[ProxyHandler]] thành null.

    8. h.

      Trả lại không xác định.

  3. 3.

    Hãy để revoker là CreateBuiltinFunction (revokerClosure, 0, “”, «[[RevocableProxy]]»).

  4. 4.

    Đặt revoker. [[RevocableProxy]] thành p.

  5. 5.

    Hãy để kết quả là OrdinaryObjectCreate (% Object.prototype% ).

  6. 6.

    Thực hiện! CreateDataPropertyOrThrow (kết quả, “proxy”, p).

  7. 7.

    Thực hiện! CreateDataPropertyOrThrow (kết quả, “thu hồi”, trình thu hồi).

  8. 8.

    Trả về kết quả.

28.3

Đối tượng không gian tên mô-đun

Đối tượng không gian tên mô-đun là một đối tượng ngoại lai của không gian tên mô-đun cung cấp quyền truy cập dựa trên thuộc tính thời gian chạy vào các ràng buộc đã xuất của mô-đun. Không có hàm hàm tạo cho Đối tượng không gian tên mô-đun. Thay vào đó, một đối tượng như vậy được tạo cho mỗi mô-đun được nhập bởi một ImportDec Tuyên bố có chứa NameSpaceImport .

Ngoài các thuộc tính được chỉ định trong 10.4.6 , mỗi Đối tượng không gian tên mô-đun có thuộc tính riêng sau:

28.3.1

@@ toStringTag

Giá trị ban đầu của thuộc tính @@ toStringTag là giá trị Chuỗi “Mô-đun”.

Thuộc tính này có các thuộc tính {[[Writes]]: false, [[Enumerable]]: false, [[Configurable]]: false}.

E

Chỉnh sửa và làm rõ trong ECMAScript 2015 với Tác động tương thích có thể xảy ra

9.1.1.4.15 9.1.1.4.18 , Phiên bản 5 và 5.1 đã sử dụng kiểm tra sự tồn tại của thuộc tính để xác định xem đối tượng toàn cầu
thuộc tính tương ứng với một khai báo toàn cục mới đã tồn tại.
ECMAScript 2015 sử dụng kiểm tra sự tồn tại thuộc tính của riêng mình. Điều này tương ứng với
những gì thường được trình duyệt web triển khai nhất.

10.4.2.1 : Phiên bản thứ 5 đã di chuyển việc nắm bắt độ dài mảng hiện tại trước khi chuyển đổi số nguyên của chỉ số mảng
hoặc giá trị độ dài mới. Tuy nhiên, giá trị độ dài thu được có thể trở thành
không hợp lệ nếu quá trình chuyển đổi có tác dụng phụ của việc thay đổi
độ dài mảng. ECMAScript 2015 chỉ định rằng độ dài mảng hiện tại
phải được chụp lại sau khi có thể xảy ra các tác dụng phụ như vậy.

21.4.1.14 : Các phiên bản trước cho phép thao tác trừu tượng TimeClip trả về + 0𝔽 hoặc -0𝔽 dưới dạng đại diện của 0 giá trị thời gian . ECMAScript 2015 chỉ định rằng + 0𝔽 luôn được trả về. Điều này có nghĩa là đối với ECMAScript 2015, giá trị thời gian của Ngày không bao giờ có thể quan sát được là -0𝔽 và các phương thức trả về giá trị thời gian không bao giờ trả về -0𝔽.

21.4.1.15 :
Nếu không có biểu diễn độ lệch UTC, thì múi giờ địa phương là
đã sử dụng. Phiên bản 5.1 đã tuyên bố không chính xác rằng một múi giờ bị thiếu nên
được hiểu là “z”.

21.4.4.36: Nếu không thể biểu diễn năm bằng Định dạng chuỗi ngày giờ được chỉ định trong 21.4.1.15 , một ngoại lệ RangeError sẽ được đưa ra. Các ấn bản trước không chỉ rõ hành vi cho trường hợp đó.

21.4.4.41 : Các phiên bản trước không chỉ định giá trị được trả về bởi Date.prototype.toString khi giá trị thời gian này là NaN. ECMAScript 2015 chỉ định kết quả là giá trị Chuỗi “Ngày không hợp lệ”.

22.2.3.1 , 22.2.3.2.5 : Bất kỳ mã LineTerminator nào trỏ đến giá trị của thuộc tính “nguồn” của phiên bản RegExp phải được thể hiện bằng cách sử dụng lối thoát sự phối hợp. Phiên bản 5.1 chỉ yêu cầu thoát / .

22.2.5.8 , 22.2.5.11 : Trong các phiên bản trước, thông số kỹ thuật cho String.prototype.match String. prototype.replace không chính xác đối với các trường hợp đối số mẫu là giá trị RegExp có cờ global được đặt. Các thông số kỹ thuật trước đó cho biết rằng đối với mỗi lần thử khớp với mẫu, nếu lastIndex không thay đổi, nó sẽ được tăng lên 1. Hành vi đúng là lastIndex phải được tăng lên một chỉ khi mẫu phù hợp với Chuỗi trống.

23.1.3.28 : Các phiên bản trước không chỉ rõ cách giá trị NaN do so sánh trả về được diễn giải bởi Array.prototype.sort . ECMAScript 2015 chỉ định rằng giá trị như vậy được coi như là + 0𝔽 được trả về từ so sánh. ECMAScript 2015 cũng chỉ định rằng ToNumber được áp dụng cho kết quả được trả về bởi so sánh. Trong các phiên bản trước, ảnh hưởng của kết quả so sánh không phải là Giá trị số đã được xác định về việc triển khai . Trên thực tế, việc triển khai gọi ToNumber .

G

Colophon

Thông số kỹ thuật này được tác giả trên GitHub ở định dạng nguồn rõ ràng có tên là Ecmarkup .
Ecmarkup là một phương ngữ HTML và Markdown cung cấp một khuôn khổ và
bộ công cụ để tạo thông số kỹ thuật ECMAScript trong văn bản rõ và
xử lý thông số kỹ thuật thành một HTML đầy đủ tính năng hiển thị
tuân theo các quy ước biên tập cho tài liệu này. Ecmarkup được xây dựng dựa trên
và tích hợp một số định dạng và công nghệ khác, bao gồm Grammarkdown để xác định cú pháp và Ecmarkdown để tạo các bước thuật toán. Kết xuất PDF của thông số kỹ thuật này được tạo ra bằng cách in kết xuất HTML thành PDF.

Các phiên bản trước của đặc tả này được tạo ra bằng Word —
Văn bản nguồn Ecmarkup hình thành nền tảng của ấn bản này đã được tạo ra
bằng cách chuyển đổi tài liệu Word ECMAScript 2015 sang Ecmarkup bằng cách sử dụng
công cụ chuyển đổi tự động.

H

Thư mục

  1. IEEE 754-2019:. Viện Kỹ sư Điện và Điện tử, New York (2019)

    Lưu ý

    Không có thay đổi quy chuẩn nào giữa IEEE 754-2008 và IEEE 754-2019 ảnh hưởng đến đặc điểm kỹ thuật ECMA-262.

  2. , có tại & lt; https://unicode.org/versions/latest & gt;
  3. , có tại & lt; https://unicode.org/notes/tn5/ & gt;
  4. , có tại & lt; https://unicode.org/reports/tr10/ & gt;
  5. , có tại & lt; https://unicode.org/reports/tr15/ & gt;
  6. , có tại & lt; https://unicode.org/reports/tr18/ & gt;
  7. , có tại & lt; https://unicode.org/reports/tr24/ & gt;
  8. , có tại & lt; https://unicode.org/reports/tr31/ & gt;
  9. , có tại & lt; https://unicode.org/reports/tr44/ & gt;
  10. , có tại & lt; https://unicode.org/reports/tr51/ & gt;
  11. , có sẵn tại & lt; https://www.iana.org/time-zones & gt;
  12. ISO 8601: 2004 (E)
  13. , có tại & lt; https://tools.ietf.org/html/rfc1738 & gt;
  14. , có tại & lt; https://tools.ietf.org/html/rfc2396 & gt;
  15. , có tại & lt; https://tools.ietf.org/html/rfc3629 & gt;
  16. , có tại & lt; https://tools.ietf.org/html/rfc7231 & gt;

Tôi

Bản quyền & amp; Giấy phép phần mềm

Ecma International

Rue du Rhone 114

CH-1204 Geneva

Điện thoại: +41 22 849 6000

Fax: +41 22 849 6001

Web: https://ecma-international.org/

Thông báo Bản quyền Thay thế và Giấy phép Bản quyền

© 2022 Ecma International

Bằng cách lấy và / hoặc sao chép tác phẩm này, bạn (người được cấp phép) đồng ý rằng bạn đã đọc, hiểu và sẽ tuân thủ các điều khoản và điều kiện sau đây.
Theo bản quyền của Ecma, cho phép sao chép, sửa đổi, chuẩn bị các tác phẩm phái sinh và phân phối tác phẩm này, có hoặc không có sửa đổi, cho bất kỳ mục đích nào và không tính phí hoặc tiền bản quyền được cấp theo văn bản này, với điều kiện là bạn bao gồm những điều sau đây trên TẤT CẢ các bản sao của tác phẩm hoặc các phần của chúng, bao gồm các sửa đổi:

Tài liệu này có thể được sao chép, xuất bản và phân phối cho người khác và một số tác phẩm phái sinh của tài liệu này có thể được chuẩn bị, sao chép, xuất bản và phân phối toàn bộ hoặc một phần, với điều kiện là thông báo bản quyền ở trên và điều này Giấy phép Bản quyền và Tuyên bố từ chối trách nhiệm được bao gồm trên tất cả các bản sao và các tác phẩm phái sinh như vậy. Các tác phẩm phái sinh duy nhất được phép theo Giấy phép Bản quyền và Tuyên bố từ chối trách nhiệm này là:

(i) Toàn bộ văn bản của THÔNG BÁO VỀ BẢN QUYỀN VÀ GIẤY PHÉP BẢN QUYỀN này ở một vị trí mà người dùng tác phẩm được phân phối lại hoặc phái sinh có thể xem được.

(ii) Bất kỳ tuyên bố từ chối trách nhiệm, thông báo hoặc điều khoản và điều kiện nào đã tồn tại từ trước về sở hữu trí tuệ. Nếu không tồn tại, thông báo bản quyền thay thế Ecma phải được bao gồm.

(iii) Thông báo về bất kỳ thay đổi hoặc chỉnh sửa nào, thông qua tuyên bố bản quyền trên tài liệu, chẳng hạn như “Tài liệu này bao gồm tài liệu được sao chép từ hoặc có nguồn gốc từ [tiêu đề và URI của tài liệu Ecma].
Bản quyền © Ecma International.

Tuyên bố từ chối trách nhiệm

CÔNG VIỆC NÀY ĐƯỢC CUNG CẤP “NGUYÊN TRẠNG” VÀ CHỦ BẢN QUYỀN KHÔNG TUYÊN BỐ HOẶC BẢO ĐẢM, RÕ RÀNG HOẶC NGỤ Ý, BAO GỒM NHƯNG KHÔNG GIỚI HẠN, BẢO ĐẢM VỀ TÍNH KHẢ NĂNG HOẶC PHÙ HỢP VỚI BẤT KỲ MỤC ĐÍCH CỤ THỂ NÀO HOẶC VIỆC SỬ DỤNG TÀI LIỆU SẼ KHÔNG GIỚI HẠN BẤT KỲ BẤT KỲ BÊN THỨ BA NÀO, BẢN QUYỀN, THƯƠNG MẠI HOẶC CÁC QUYỀN KHÁC.

CHỦ NHÂN BẢN QUYỀN SẼ KHÔNG CHỊU TRÁCH NHIỆM PHÁP LÝ ĐỐI VỚI BẤT KỲ THIỆT HẠI TRỰC TIẾP, ẤN ĐỘ, ĐẶC BIỆT HOẶC HẬU QUẢ PHÁT SINH NGOÀI BẤT KỲ VIỆC SỬ DỤNG TÀI LIỆU NÀO.

Tên và nhãn hiệu của chủ sở hữu bản quyền KHÔNG được sử dụng trong quảng cáo hoặc công khai liên quan đến tác phẩm mà không có sự cho phép trước bằng văn bản cụ thể. Quyền sở hữu bản quyền trong tác phẩm này sẽ luôn thuộc về chủ sở hữu bản quyền. ”

Giấy phép Phần mềm

Tất cả Phần mềm có trong tài liệu này (“Phần mềm”) là
được bảo vệ bởi bản quyền và đang được cung cấp theo “BSD
Giấy phép “, được bao gồm bên dưới. Phần mềm này có thể tuân theo bên thứ ba
quyền (quyền của các bên không phải Ecma International), bao gồm
quyền bằng sáng chế và không có giấy phép nào thuộc quyền của bên thứ ba đó được cấp
theo giấy phép này ngay cả khi bên thứ ba có liên quan là thành viên của
Ecma International. XEM BỘ MÃ HIỆU QUẢ ECMA TRONG CÁC BÀI TOÁN VỀ BỆNH NHÂN
CÓ SN TẠI https://ecma-international.org/memento/codeofconduct.htm
ĐỂ BIẾT THÔNG TIN LIÊN QUAN ĐẾN VIỆC CẤP PHÉP CỦA CÁC YÊU CẦU BỆNH NHÂN ĐƯỢC
BẮT BUỘC THỰC HIỆN CÁC TIÊU CHUẨN QUỐC TẾ ECMA.

Phân phối lại và sử dụng ở dạng nguồn và dạng nhị phân, có hoặc không
sửa đổi, được cho phép với điều kiện là các điều kiện sau
đã gặp:

  1. Việc phân phối lại mã nguồn phải giữ lại thông báo bản quyền ở trên, danh sách các điều kiện này và tuyên bố từ chối trách nhiệm sau.
  2. Phân phối lại ở dạng nhị phân phải sao chép bản quyền ở trên
    lưu ý, danh sách các điều kiện này và tuyên bố từ chối trách nhiệm sau trong
    tài liệu và / hoặc các tài liệu khác được cung cấp cùng với bản phân phối.
  3. Không được sử dụng tên của các tác giả và Ecma International
    xác nhận hoặc quảng bá các sản phẩm bắt nguồn từ phần mềm này mà không
    sự cho phép cụ thể trước bằng văn bản.

PHẦN MỀM NÀY ĐƯỢC CUNG CẤP BỞI ECMA INTERNATIONAL “NGUYÊN TRẠNG” VÀ BẤT KỲ
BẢO ĐẢM RÕ RÀNG HOẶC NGỤ Ý, BAO GỒM, NHƯNG KHÔNG GIỚI HẠN ĐỐI VỚI,
CÁC BẢO ĐẢM NGẪU NHIÊN VỀ KHẢ NĂNG LINH HOẠT VÀ PHÙ HỢP VỚI MỘT NGƯỜI THAM GIA
MỤC ĐÍCH BỊ TỪ CHỐI. TRONG BẤT KỲ SỰ KIỆN NÀO, ECMA INTERNATIONAL CÓ THỂ CHỊU TRÁCH NHIỆM PHÁP LÝ
ĐỐI VỚI BẤT KỲ TRỰC TIẾP, CHỈ ĐỊNH, SỰ CỐ, ĐẶC BIỆT, KHÁI NIỆM HOẶC
CÁC THIỆT HẠI HẬU QUẢ (BAO GỒM, NHƯNG KHÔNG GIỚI HẠN, QUY TRÌNH
NỘP HÀNG HOẶC DỊCH VỤ; MẤT SỬ DỤNG, DỮ LIỆU HOẶC LỢI NHUẬN; HOẶC DOANH NGHIỆP
INTERRUPTION) TUY NHIÊN GÂY RA VÀ THEO BẤT KỲ LÝ THUYẾT NÀO VỀ TRÁCH NHIỆM PHÁP LÝ, GÌ TRONG
HỢP ĐỒNG, TRÁCH NHIỆM PHÁP LÝ NGHIÊM TRỌNG HOẶC RÈN LUYỆN (BAO GỒM SỰ ĐÀM PHÁN HOẶC HÀNH VI KHÁC)
PHÁT HIỆN BẤT KỲ CÁCH NÀO NGOÀI VIỆC SỬ DỤNG PHẦN MỀM NÀY, NGAY CẢ KHI ĐƯỢC TƯ VẤN
KHẢ NĂNG THIỆT HẠI ĐÓ.


Xem thêm những thông tin liên quan đến chủ đề phiên bản mới nhất của ecmascript là gì

Giới thiệu về Generator functions trong Javascript – ES6

  • Tác giả: Anh Nguyen Ngoc
  • Ngày đăng: 2021-03-13
  • Đánh giá: 4 ⭐ ( 8922 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Lập trình Javascript – ECMAScript playlist: https://www.youtube.com/playlist?list=PLn9lhDYvf_3Fe5OUVTmkt2lFAoOUN0kpM
    Nhóm thảo luận: https://www.facebook.com/groups/115838366528104
    Fan Page: https://www.facebook.com/proit4all

Các chức năng mới của ES6 của bộ tiêu chuẩn ECMAScript

  • Tác giả: expressmagazine.net
  • Đánh giá: 4 ⭐ ( 4910 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong phạm vi bài viết này, mình sẽ liệt kê ra một số chức năng nổi bật nhất. Và mình sẽ hạn chế dịch những tên khái niệm này ra tiếng Việt,

ECMAScript – ES6 Là gì?

  • Tác giả: hoclaptrinh.vn
  • Đánh giá: 4 ⭐ ( 3343 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: __Javascript__ thì quá quen thuộc rồi nhưng bạn đã nghe đến __ES6__ bao giờ chưa? Chắc chưa đúng không vậy thì hãy tìm hiểu về nó nhé vì ES6 rất cần thiết cho v…

Những điều cần biết về ECMAScript

  • Tác giả: ehkoo.com
  • Đánh giá: 3 ⭐ ( 9409 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bạn có bao giờ băn khoăn: vì sao ECMAScript thường được nhắc tới khi đề cập những cải tiến của JavaScript? Vì sao ES6+ thường được dùng để nói về JavaScript hiện đại? Vì sao ECMAScript 6 còn được gọi là ECMAScript 2015?… Bài viết này sẽ giải đáp tất cả.

ECMAScript 6 – 10 tính năng mới tuyệt vời / Mã hóa

  • Tác giả: vi.phhsnews.com
  • Đánh giá: 4 ⭐ ( 4679 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bạn có biết rằng JavaScript (cùng với JScript và ActionScript) là một triển khai của đặc tả ngôn ngữ kịch bản lệnh phía máy khách mục đích chung

10 tính năng mới tuyệt vời của ECMAScript 6

  • Tác giả: itzone.com.vn
  • Đánh giá: 3 ⭐ ( 1733 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: The ITZone platform Vietnam is the community for anyone interested in news, training seminars, presentations etc in the IT industry

ECMAScript là gì?

  • Tác giả: toidicode.com
  • Đánh giá: 3 ⭐ ( 3074 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Vào cuối năm 1995 trên thế giới xuất hiện một ngôn ngữ kịch bản được phát triển bởi Brendan Eich (nhân viên của Netscapce) có tên là Mocha và chỉ ngay sau đó một thời gian nó lại được đổi tên thành LiveScript và cuối cùng là Javascript (tên hiện tại).

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

By ads_php