ECMAScript proposals
Finished proposals are proposals that have reached stage 4, and are included in the latest draft of the specification.
Proposal | ES Version | Description (νκΈ) |
---|---|---|
[RegExp.escape ] |
ES2025 | μ κ·μ λ΄ νΉμ λ¬Έμλ₯Ό μ΄μ€μΌμ΄ννμ¬ λ¦¬ν°λ΄ λ¬Έμμ΄λ‘ μ·¨κΈνλ μ μ λ©μλ RegExp.escape() λ₯Ό μΆκ°ν©λλ€. |
Float16 on TypedArrays, DataView, Math.f16round |
ES2025 | TypedArray , DataView μμ 16λΉνΈ λΆλμμμ (half-precision) νμμ μ§μνκ³ , κ°μ₯ κ°κΉμ΄ 16λΉνΈ λΆλμμμ κ°μΌλ‘ λ°μ¬λ¦Όνλ Math.f16round() ν¨μλ₯Ό μΆκ°ν©λλ€. |
[Promise.try ] |
ES2025 | λκΈ°/λΉλκΈ° ν¨μ μ€νμ try...catch μ²λΌ κ°μΈ μ¦μ Promiseλ₯Ό λ°ννλ Promise.try() μ μ λ©μλλ₯Ό μΆκ°ν©λλ€. |
Sync Iterator helpers | ES2025 | λκΈ° μ΄ν°λ μ΄ν°μ map , filter , take , drop , flatMap , reduce , toArray , forEach , some , every , find μ κ°μ ν¬νΌ λ©μλλ₯Ό μΆκ°ν©λλ€. |
JSON Modules | ES2025 | import λ¬Έμ μ¬μ©νμ¬ JSON νμΌμ λͺ¨λμ²λΌ μ§μ κ°μ Έμ¬ μ μλλ‘ μ§μν©λλ€. |
Import Attributes | ES2025 | import λ¬Έμ μΆκ°μ μΈ μμ±(μ: type )μ λͺ
μνμ¬ λͺ¨λ λ‘λ© λ°©μμ μ μ΄ν©λλ€ (μ΄μ 'Import Assertions'). |
RegExp Modifiers | ES2025 | μ κ·μ 리ν°λ΄ λ΄μμ (?i:) μ κ°μ΄ νΉμ λΆλΆμλ§ νλκ·Έ(i, m, s)λ₯Ό μ μ©νκ±°λ ν΄μ ν μ μλ λ¬Έλ²μ μΆκ°ν©λλ€. |
New Set methods | ES2025 | Set κ°μ²΄μ κ΅μ§ν©(intersection ), ν©μ§ν©(union ), μ°¨μ§ν©(difference ), λμΉμ°¨μ§ν©(symmetricDifference ), λΆλΆμ§ν© μ¬λΆ(isSubsetOf ), μμμ§ν© μ¬λΆ(isSupersetOf ), μλ‘μ μ¬λΆ(isDisjointFrom ) λ±μ μλ‘μ΄ λ©μλλ₯Ό μΆκ°ν©λλ€. |
Duplicate named capture groups | ES2025 | μ κ·μμμ λμΌν μ΄λ¦μ μΊ‘μ² κ·Έλ£Ήμ μ¬λ¬ λ² μ¬μ©ν μ μλλ‘ νμ©ν©λλ€. |
ArrayBuffer transfer | ES2024 | ArrayBuffer μ μμ κΆμ λ€λ₯Έ 컨ν
μ€νΈλ‘ ν¨μ¨μ μΌλ‘ μ΄μ (transfer)νκ±°λ, νμ¬ λ²νΌλ₯Ό μ μ§νλ©΄μ 볡μ¬λ³Έμ μ΄μ νλ κΈ°λ₯μ μΆκ°ν©λλ€. (transfer() , transferToFixedLength() ) |
[Promise.withResolvers ] |
ES2024 | Promise κ°μ²΄μ κ·Έ Promiseλ₯Ό μ μ΄νλ resolve λ° reject ν¨μλ₯Ό ν¨κ» λ°ννλ Promise.withResolvers() μ μ λ©μλλ₯Ό μΆκ°ν©λλ€. |
Array Grouping | ES2024 | λ°°μ΄μ μμλ₯Ό μ£Όμ΄μ§ μ½λ°± ν¨μκ° λ°ννλ κ°μ κΈ°μ€μΌλ‘ κ·Έλ£Ήννμ¬ κ°μ²΄ λλ Map μΌλ‘ λ°ννλ Object.groupBy() λ° Map.groupBy() λ©μλλ₯Ό μΆκ°ν©λλ€. |
Resizable and growable ArrayBuffers | ES2024 | μμ± μ maxByteLength λ₯Ό μ§μ νμ¬ λ°νμμ ν¬κΈ°λ₯Ό μ‘°μ ν μ μλ ArrayBuffer λ° SharedArrayBuffer λ₯Ό μ§μν©λλ€. |
RegExp v flag with set notation + properties of strings | ES2024 | μ κ·μμ μ λμ½λ μ§ν© μ°μ°(μ°¨μ§ν©, κ΅μ§ν© λ±) λ° λ¬Έμμ΄μ μ λμ½λ μμ± μ§μμ κ°ννλ v νλκ·Έλ₯Ό μΆκ°ν©λλ€. |
[Atomics.waitAsync ] |
ES2024 | SharedArrayBuffer μ νΉμ μμΉ κ°μ΄ λ³κ²½λ λκΉμ§ λΉλκΈ°μ μΌλ‘ λκΈ°νλ Atomics.waitAsync() λ©μλλ₯Ό μΆκ°ν©λλ€. |
Well-Formed Unicode Strings | ES2024 | λ¬Έμμ΄μ΄ μ ꡬμ±λ μ λμ½λμΈμ§ νμΈνλ isWellFormed() λ©μλμ, μ ꡬμ±λ μ λμ½λλ‘ λ³ννλ toWellFormed() λ©μλλ₯Ό String.prototype μ μΆκ°ν©λλ€. |
Change Array by Copy | ES2023 | μλ³Έ λ°°μ΄μ λ³κ²½νμ§ μκ³ λ³κ²½λ 볡μ¬λ³Έμ λ°ννλ λ°°μ΄ λ©μλλ€(toReversed() , toSorted() , toSpliced() , with() )μ μΆκ°ν©λλ€. |
Symbols as WeakMap keys | ES2023 | κ³ μ νκ³ κ°λΉμ§ 컬λ μ
λμμ΄ λ μ μλ Symbol μ WeakMap μ ν€λ‘ μ¬μ©ν μ μλλ‘ νμ©ν©λλ€. |
Hashbang Grammar | ES2023 | JavaScript μ€ν¬λ¦½νΈ νμΌ μμ λΆλΆμ ν΄μλ±
/μ
λ±
(#! ) μ£Όμμ νμ€ λ¬Έλ²μΌλ‘ 곡μ μΈμ νμ¬, μ€ν νκ²½μ΄ μ΄λ₯Ό μ¬λ°λ₯΄κ² ν΄μν μ μλλ‘ ν©λλ€. |
Array find from last | ES2023 | λ°°μ΄μ λμμλΆν° 쑰건μ λ§μ‘±νλ μμλ₯Ό μ°Ύλ findLast() λ° ν΄λΉ μμμ μΈλ±μ€λ₯Ό μ°Ύλ findLastIndex() λ©μλλ₯Ό μΆκ°ν©λλ€. |
Error Cause | ES2022 | Error κ°μ²΄λ₯Ό μμ±ν λ μλ¬μ μμΈμ΄ λ λ€λ₯Έ μλ¬λ₯Ό λͺ
μν μ μλ cause μ΅μ
μ Error μμ±μμ μΆκ°ν©λλ€. |
Class Static Block | ES2022 | ν΄λμ€ μ μ λ΄μμ μ μ λ©€λ²λ₯Ό μ΄κΈ°ννκ±°λ 볡μ‘ν μ μ λ‘μ§μ μνν μ μλ static {} λΈλ‘μ λμ
ν©λλ€. |
Accessible Object.prototype.hasOwnProperty |
ES2022 | Object.prototype.hasOwnProperty.call(obj, prop) λμ μ¬μ©ν μ μλ λ μμ νκ³ κ°κ²°ν Object.hasOwn(obj, prop) μ μ λ©μλλ₯Ό μΆκ°ν©λλ€. |
[.at() ] |
ES2022 | λ°°μ΄, λ¬Έμμ΄, TypedArray λ± μΈλ±μ± κ°λ₯ν κ°μ²΄μμ μμ μΈλ±μ€λ₯Ό μ¬μ©νμ¬ λμμλΆν° μμμ μ κ·Όν μ μλ .at() λ©μλλ₯Ό μΆκ°ν©λλ€. |
Ergonomic brand checks for Private Fields | ES2022 | in μ°μ°μλ₯Ό μ¬μ©νμ¬ ν΄λμ€ μΈλΆμμλ κ°μ²΄κ° νΉμ νλΌμ΄λΉ νλλ₯Ό κ°μ§κ³ μλμ§ μ¬λΆλ₯Ό μμ νκ² νμΈν μ μκ² ν©λλ€. |
Top-level await |
ES2022 | ES λͺ¨λμ μ΅μμ λ 벨μμ async ν¨μ μΈλΆμμλ await ν€μλλ₯Ό μ¬μ©νμ¬ λΉλκΈ° μμ
μ μ²λ¦¬ν μ μλλ‘ ν©λλ€. |
RegExp Match Indices | ES2022 | μ κ·μ μΌμΉ κ²°κ³Ό κ°μ²΄μ κ° μΊ‘μ² κ·Έλ£Ήμ μμ λ° λ μΈλ±μ€ μ 보λ₯Ό μ 곡νλ indices μμ±μ μΆκ°ν©λλ€ (μ κ·μμ d νλκ·Έ μ¬μ© μ). |
Class Fields (Private instance methods and accessors, Class Public Instance Fields & Private Instance Fields, Static class fields and private static methods) | ES2022 | ν΄λμ€μ public/private μΈμ€ν΄μ€ νλ, public/private static νλ, private μΈμ€ν΄μ€ λ©μλ/μ κ·Όμ, private static λ©μλ/μ κ·Όμλ₯Ό μ μΈνλ κΈ°λ₯μ μ 곡ν©λλ€. |
Numeric separators | ES2021 | μ«μ 리ν°λ΄(μ: 1_000_000 ) λ΄μ λ°μ€(_ )μ μ¬μ©νμ¬ κ°λ
μ±μ ν₯μμν€λ κΈ°λ₯μ μΆκ°ν©λλ€. |
Logical Assignment Operators | ES2021 | λ
Όλ¦¬ μ°μ°μ(&& , ` |
WeakRefs | ES2021 | κ°μ²΄μ λν μ½ν μ°Έμ‘°(WeakRef )λ₯Ό μμ±νμ¬, ν΄λΉ κ°μ²΄κ° κ°λΉμ§ 컬λ μ
λμμ΄ λλ κ²μ λ§μ§ μμΌλ©΄μ μ°Έμ‘°ν μ μκ² ν©λλ€. FinalizationRegistry λ ν¨κ» λμ
λ©λλ€. |
[Promise.any ] |
ES2021 | μ¬λ¬ Promise μ€ κ°μ₯ λ¨Όμ μ±κ³΅(fulfilled)νλ Promise μ κ²°κ³Όλ₯Ό λ°νν©λλ€. λͺ¨λ Promise κ° μ€ν¨νλ©΄ AggregateError λ₯Ό λ°νν©λλ€. |
[String.prototype.replaceAll ] |
ES2021 | λ¬Έμμ΄ λ΄μμ νΉμ λΆλΆ λ¬Έμμ΄μ λͺ¨λ λ°μμ λ€λ₯Έ λ¬Έμμ΄λ‘ κ΅μ²΄νλ replaceAll() λ©μλλ₯Ό μΆκ°ν©λλ€. |
[import.meta ] |
ES2020 | ES λͺ¨λ λ΄μμ νμ¬ λͺ¨λμ λν 컨ν
μ€νΈ νΉμ λ©νλ°μ΄ν°(μ: λͺ¨λ URL)λ₯Ό λ΄κ³ μλ import.meta κ°μ²΄λ₯Ό μ 곡ν©λλ€. |
Nullish coalescing Operator | ES2020 | ?? μ°μ°μλ‘, μΌμͺ½ νΌμ°μ°μκ° null λλ undefined μΌ κ²½μ° μ€λ₯Έμͺ½ νΌμ°μ°μλ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ μΌμͺ½ νΌμ°μ°μλ₯Ό λ°νν©λλ€. |
Optional Chaining | ES2020 | ?. μ°μ°μλ‘, 체μΈμ μ°Έμ‘°κ° null λλ undefined μΌ κ°λ₯μ±μ΄ μμ λ μλ¬ λ°μ μμ΄ νλ‘νΌν°λ ν¨μ νΈμΆμ μλνκ³ , ν΄λΉ κ°μ΄ μμΌλ©΄ undefined λ₯Ό λ°νν©λλ€. |
[for-in mechanics] |
ES2020 | for...in 루νκ° κ°μ²΄ μμ±μ μ΄κ±°νλ μμμ λν λͺ
μΈλ₯Ό λͺ
νν νμ¬ κ΅¬ν κ° μΌκ΄μ±μ λμ
λλ€. |
[globalThis ] |
ES2020 | λ€μν JavaScript νκ²½(λΈλΌμ°μ μ window , Node.jsμ global λ±)μμ μ μ this κ°μ μΌκ΄λκ² μ°Έμ‘°ν μ μλ globalThis ν€μλλ₯Ό μ 곡ν©λλ€. |
[Promise.allSettled ] |
ES2020 | μ¬λ¬ Promise κ° λͺ¨λ μ΄ν(settled: μ±κ³΅ λλ μ€ν¨)λ λκΉμ§ κΈ°λ€λ¦° ν, κ° Promise μ μνμ κ²°κ³Ό(λλ μ΄μ )λ₯Ό λ΄μ κ°μ²΄μ λ°°μ΄μ λ°νν©λλ€. |
[BigInt ] |
ES2020 | Number μ μ΅λ μμ μ μλ³΄λ€ ν° μ μλ₯Ό ννν μ μλ μλ‘μ΄ μ«μ μμ νμ
BigInt λ₯Ό λμ
ν©λλ€. |
[import() ] |
ES2020 | νμν λ λͺ¨λμ λμ μΌλ‘ λ‘λν μ μλ ν¨μ ννμ import() λ¬Έλ²μ μ 곡ν©λλ€. Promise λ₯Ό λ°νν©λλ€. |
[String.prototype.matchAll ] |
ES2020 | μ κ·μκ³Ό μΌμΉνλ λͺ¨λ κ²°κ³Όλ₯Ό ν¬ν¨νλ μ΄ν°λ μ΄ν°λ₯Ό λ°ννλ matchAll() λ©μλλ₯Ό String.prototype μ μΆκ°ν©λλ€. |
[Array.prototype.{flat,flatMap} ] |
ES2019 | μ€μ²©λ λ°°μ΄μ μ§μ λ κΉμ΄κΉμ§ ννννλ flat() λ©μλμ, λ°°μ΄μ κ° μμμ λ§€ν ν¨μλ₯Ό μ μ©ν ν κ²°κ³Όλ₯Ό ννννλ flatMap() λ©μλλ₯Ό μΆκ°ν©λλ€. |
[String.prototype.{trimStart,trimEnd} ] |
ES2019 | λ¬Έμμ΄μ μμ λΆλΆ 곡백μ μ κ±°νλ trimStart() (λλ trimLeft )μ λ λΆλΆ 곡백μ μ κ±°νλ trimEnd() (λλ trimRight ) λ©μλλ₯Ό μΆκ°ν©λλ€. |
Well-formed JSON.stringify |
ES2019 | JSON.stringify() κ° μλͺ»λ μ λμ½λ λ¬Έμ(μ: lone surrogates)λ₯Ό μ ν¨ν μ λμ½λ μ΄μ€μΌμ΄ν μνμ€λ‘ λ³ννμ¬ λ°ννλλ‘ μμ ν©λλ€. |
[Object.fromEntries ] |
ES2019 | [key, value] μμ λ°°μ΄μ΄λ μ΄ν°λ¬λΈ κ°μ²΄λ₯Ό λ°μ μλ‘μ΄ κ°μ²΄λ‘ λ³ννλ Object.fromEntries() μ μ λ©μλλ₯Ό μΆκ°ν©λλ€. (Object.entries() μ λ°λ κΈ°λ₯) |
[Function.prototype.toString revision] |
ES2019 | Function.prototype.toString() μ΄ ν¨μ μμ€ μ½λλ₯Ό λ°νν λ μ£Όμκ³Ό 곡백μ ν¬ν¨νμ¬ μλ³Έμ λ κ°κΉκ² λ°ννλλ‘ λͺ
μΈλ₯Ό κ°μ ν©λλ€. |
[Symbol.prototype.description ] |
ES2019 | Symbol κ°μ²΄λ₯Ό μμ±ν λ μ λ¬λ μ€λͺ
μ λ°ννλ μ½κΈ° μ μ© μμ± description μ Symbol.prototype μ μΆκ°ν©λλ€. |
JSON superset | ES2019 | ECMAScript λ¬Έμμ΄ λ¦¬ν°λ΄μ΄ λͺ¨λ JSON λ¬Έμμ΄ λ¦¬ν°λ΄μ ν¬ν¨νλλ‘ νμ¬, U+2028 (μ€ κ΅¬λΆμ) λ° U+2029 (λ¨λ½ ꡬλΆμ) λ¬Έμκ° λ¬Έμμ΄ λ¦¬ν°λ΄μ μ§μ ν¬ν¨λ μ μλλ‘ ν©λλ€. |
Optional catch binding |
ES2019 | try...catch λ¬Έμμ catch λΈλ‘μ μμΈ κ°μ²΄ λ°μΈλ©(λ§€κ°λ³μ)μ μ¬μ©νμ§ μμ κ²½μ° μλ΅ν μ μλλ‘ νμ©ν©λλ€ (μ: try {...} catch {...} ). |
Asynchronous Iteration | ES2018 | λΉλκΈ°μ μΌλ‘ λ°μ΄ν°λ₯Ό μμ±νλ μ΄ν°λ μ΄ν°(Async Iterators)μ μ΄λ₯Ό μλΉνλ for-await...of 루ν λ¬Έλ²μ λμ
ν©λλ€. |
[Promise.prototype.finally ] |
ES2018 | Promise κ° μ±κ³΅(fulfilled)νλ μ€ν¨(rejected)νλ κ΄κ³μμ΄ νΉμ μ½λ°± ν¨μλ₯Ό μ€ννλλ‘ νλ finally() λ©μλλ₯Ό Promise.prototype μ μΆκ°ν©λλ€. |
RegExp Unicode Property Escapes | ES2018 | μ κ·μμμ μ λμ½λ μμ±(μ: Script, General_Category)μ μ¬μ©νμ¬ λ¬Έμλ₯Ό λ§€μΉν μ μλ \p{...} λ° \P{...} μ΄μ€μΌμ΄ν μνμ€λ₯Ό μ§μν©λλ€ (μ κ·μμ u νλκ·Έ νμ). |
RegExp Lookbehind Assertions | ES2018 | μ κ·μμμ νμ¬ μμΉ μ΄μ μ ν
μ€νΈλ₯Ό 쑰건μΌλ‘ λ§€μΉνλ κΈμ ν νλ°©νμ((?<=...) ) λ° λΆμ ν νλ°©νμ((?<!...) )μ μ§μν©λλ€. |
Rest/Spread Properties | ES2018 | κ°μ²΄ 리ν°λ΄μμ λλ¨Έμ§ μμ±μ λͺ¨μΌλ Rest Properties (...rest )μ κ°μ²΄μ μμ±μ νΌμΉλ Spread Properties (...obj )λ₯Ό μ§μν©λλ€. |
RegExp named capture groups | ES2018 | μ κ·μμ μΊ‘μ² κ·Έλ£Ήμ μ΄λ¦μ μ§μ νκ³ ((?<name>...) ), μ΄λ¦μΌλ‘ μ°Έμ‘°ν μ μλ κΈ°λ₯μ μΆκ°ν©λλ€. |
s (dotAll ) flag for regular expressions |
ES2018 | μ κ·μμ . λ©νλ¬Έμκ° κ°ν λ¬Έμ(μ: \n )λ₯Ό ν¬ν¨ν λͺ¨λ λ¬Έμμ μΌμΉνλλ‘ νλ s (dotAll) νλκ·Έλ₯Ό μΆκ°ν©λλ€. |
Lifting template literal restriction | ES2018 | νκ·Έλ ν
νλ¦Ώ 리ν°λ΄μμ μλͺ»λ μ΄μ€μΌμ΄ν μνμ€κ° ν¬ν¨λ λ¬Έμμ΄μ μ¬μ©ν μ μμλ μ νμ μνν©λλ€. cooked λ¬Έμμ΄μ΄ undefined μΌ κ²½μ° raw λ¬Έμμ΄μ μ¬μ©ν©λλ€. |
Shared memory and atomics | ES2017 | μ¬λ¬ μ컀(μ€λ λ) κ°μ λ©λͺ¨λ¦¬λ₯Ό 곡μ ν μ μλ SharedArrayBuffer μ, 곡μ λ©λͺ¨λ¦¬μμμ λμμ± λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν Atomics κ°μ²΄λ₯Ό λμ
νμ¬ λ³λ ¬ νλ‘κ·Έλλ°μ μ§μν©λλ€. |
Async functions | ES2017 | async ν€μλλ‘ λΉλκΈ° ν¨μλ₯Ό μ μΈνκ³ , await ν€μλλ‘ Promise κ° μλ£λ λκΉμ§ ν¨μμ μ€νμ μΌμ μ€μ§νμ¬ λΉλκΈ° μ½λλ₯Ό λκΈ°μμ²λΌ μμ±ν μ μκ² ν©λλ€. |
Trailing commas in function parameter lists and calls | ES2017 | ν¨μ λ§€κ°λ³μ λͺ©λ‘ λ° ν¨μ νΈμΆ μ λ§μ§λ§ λ§€κ°λ³μ λ€μ μΌν(trailing comma)λ₯Ό νμ©νμ¬ μ½λ μμ λ° λ²μ κ΄λ¦¬ μ©μ΄μ±μ λμ λλ€. |
[Object.getOwnPropertyDescriptors ] |
ES2017 | κ°μ²΄μ λͺ¨λ μ체 μμ±(μμλ μμ± μ μΈ)μ λν μμ± κΈ°μ μ(property descriptor)λ€μ λ΄μ κ°μ²΄λ₯Ό λ°ννλ Object.getOwnPropertyDescriptors() μ μ λ©μλλ₯Ό μΆκ°ν©λλ€. |
String padding | ES2017 | λ¬Έμμ΄μ μμ λΆλΆ(padStart() ) λλ λ λΆλΆ(padEnd() )μ μ£Όμ΄μ§ λ¬Έμλ‘ μ±μ μ§μ λ κΈΈμ΄μ μλ‘μ΄ λ¬Έμμ΄μ μμ±νλ λ©μλλ₯Ό μΆκ°ν©λλ€. |
[Object.values /Object.entries ] |
ES2017 | κ°μ²΄μ μ체 μ΄κ±° κ°λ₯ν μμ± κ°λ€μ λ°°μ΄μ λ°ννλ Object.values() μ, [key, value] μμ λ°°μ΄μ λ°ννλ Object.entries() μ μ λ©μλλ₯Ό μΆκ°ν©λλ€. |
Exponentiation operator | ES2016 | κ±°λμ κ³± μ°μ°μ μννλ μ€μ μ°μ°μ ** (μ: 2 ** 3 μ 8)λ₯Ό μΆκ°ν©λλ€. Math.pow() μ μ μ¬ν©λλ€. |
[Array.prototype.includes ] |
ES2016 | λ°°μ΄μ΄ νΉμ μμλ₯Ό ν¬ν¨νκ³ μλμ§ μ¬λΆλ₯Ό λΆλ¦¬μΈ κ°μΌλ‘ λ°ννλ includes() λ©μλλ₯Ό Array.prototype μ μΆκ°ν©λλ€. NaN λ μ νν μ°Ύμ μ μμ΅λλ€. |
Lexical Declarations (let , const ) |
ES2015 | λΈλ‘ μ€μ½νλ₯Ό κ°μ§λ λ³μ μ μΈ ν€μλ let κ³Ό μμ μ μΈ ν€μλ const λ₯Ό λμ
ν©λλ€. |
Arrow Functions | ES2015 | function ν€μλ λμ νμ΄ν(=> )λ₯Ό μ¬μ©νμ¬ ν¨μλ₯Ό κ°κ²°νκ² μ μνλ©°, μ체 this λ°μΈλ©μ κ°μ§ μμ΅λλ€. |
Classes | ES2015 | νλ‘ν νμ
κΈ°λ° μμμ λ λͺ
ννκ³ μ½κ² μ¬μ©ν μ μλλ‘ νλ ν΄λμ€ λ¬Έλ²(class , constructor , extends , super , static )μ λμ
ν©λλ€. |
Enhanced Object Literals | ES2015 | κ°μ²΄ 리ν°λ΄ μ μ μ μμ± μΆμ½ νν, κ³μ°λ μμ± μ΄λ¦, λ©μλ μ μ μΆμ½ νν λ±μ μ§μν©λλ€. |
Template Literals | ES2015 | λ°±ν±(` `)μΌλ‘ κ°μΈλ λ¬Έμμ΄λ‘, λ΄λΆμ ννμμ μ½μ (${expression})νκ±°λ μ¬λ¬ μ€ λ¬Έμμ΄μ μ½κ² μμ±ν μ μμ΅λλ€. |
Destructuring Assignment | ES2015 | λ°°μ΄μ΄λ κ°μ²΄μ κ°μ μΆμΆνμ¬ κ°λ³ λ³μμ ν λΉνλ κ°νΈν λ¬Έλ²μ μ 곡ν©λλ€. |
Default Parameters | ES2015 | ν¨μ λ§€κ°λ³μμ κΈ°λ³Έκ°μ μ§μ νμ¬, ν΄λΉ μΈμκ° μ λ¬λμ§ μκ±°λ undefined μΌ κ²½μ° κΈ°λ³Έκ°μ μ¬μ©νλλ‘ ν©λλ€. |
Rest Parameters | ES2015 | ν¨μ λ§€κ°λ³μ λͺ©λ‘μ λ§μ§λ§μ ... μ μ¬μ©νμ¬ λλ¨Έμ§ μΈμλ€μ λ°°μ΄λ‘ λͺ¨μ μ μκ² ν©λλ€. |
Spread Syntax | ES2015 | λ°°μ΄μ΄λ μ΄ν°λ¬λΈ κ°μ²΄λ₯Ό κ°λ³ μμλ‘ νΌμΉκ±°λ, κ°μ²΄λ₯Ό λ€λ₯Έ κ°μ²΄ 리ν°λ΄μ νΌμΉ μ μκ² ν©λλ€ (... ). |
Iterators and for...of loop |
ES2015 | μ΄ν°λ μ΄μ
νλ‘ν μ½μ μ μνκ³ , μ΄ν°λ¬λΈ κ°μ²΄(λ°°μ΄, λ¬Έμμ΄, Map, Set λ±)μ κ°μ μννλ for...of 루νλ₯Ό λμ
ν©λλ€. |
Generators | ES2015 | μ€νμ μ€κ°μ λ©μΆκ³ μ¬κ°ν μ μλ νΉλ³ν ν¨μ(μ λλ μ΄ν° ν¨μ, function* )μ μ΄ν°λ μ΄ν°λ₯Ό μμ±νλ κΈ°λ₯μ μ 곡ν©λλ€. |
Promises | ES2015 | λΉλκΈ° μμ μ μ΅μ’ μλ£ λλ μ€ν¨λ₯Ό λνλ΄λ κ°μ²΄μ κ·Έ κ²°κ³Όλ₯Ό λ€λ£¨λ νμ€νλ λ°©λ²μ μ 곡ν©λλ€. |
Modules (ESM: import /export ) |
ES2015 | μ½λλ₯Ό λͺ¨λ λ¨μλ‘ κ΅¬μ±νκ³ , import μ export ν€μλλ₯Ό μ¬μ©νμ¬ λͺ¨λ κ° μμ‘΄μ±μ κ΄λ¦¬νλ νμ€ λͺ¨λ μμ€ν
μ λμ
ν©λλ€. |
Map , Set , WeakMap , WeakSet |
ES2015 | ν€-κ° μμ μ μ₯νλ Map , κ³ μ ν κ°μ μ μ₯νλ Set , κ·Έλ¦¬κ³ ν€μ λν μ½ν μ°Έμ‘°λ₯Ό κ°μ§λ WeakMap λ° WeakSet 컬λ μ
κ°μ²΄λ₯Ό λμ
ν©λλ€. |
Symbol primitive type |
ES2015 | κ³ μ νκ³ λ³κ²½ λΆκ°λ₯ν μμ κ°μΈ Symbol νμ
μ λμ
νμ¬, κ°μ²΄ μμ± ν€ μΆ©λμ λ°©μ§νλ λ° μ¬μ©λ μ μμ΅λλ€. |
Proxy and Reflect APIs |
ES2015 | κ°μ²΄μ λν κΈ°λ³Έμ μΈ λμ(μμ± μ κ·Ό, ν λΉ, μ΄κ±°, ν¨μ νΈμΆ λ±)μ κ°λ‘μ±κ³ μ¬μ μν μ μλ Proxy κ°μ²΄μ, μ΄λ¬ν λμμ μν κΈ°λ³Έ λ©μλλ₯Ό μ 곡νλ Reflect APIλ₯Ό λμ
ν©λλ€. |
[Object.assign ] |
ES2015 | νλ μ΄μμ μΆμ² κ°μ²΄λ‘λΆν° λͺ¨λ μ΄κ±° κ°λ₯ν μ체 μμ±μ λμ κ°μ²΄λ‘ 볡μ¬νλ Object.assign() μ μ λ©μλλ₯Ό μΆκ°ν©λλ€. |
New String methods (e.g., startsWith , endsWith , includes , repeat ) |
ES2015 | λ¬Έμμ΄ μ²λ¦¬λ₯Ό μν λ€μν μ λ©μλλ€(startsWith , endsWith , includes , repeat λ±)μ String.prototype μ μΆκ°ν©λλ€. |
New Array methods (e.g., Array.from , Array.of , find , findIndex , fill , copyWithin ) |
ES2015 | λ°°μ΄ μ‘°μ λ° μμ±μ μν λ€μν μ λ©μλλ€(Array.from , Array.of , find , findIndex , fill , copyWithin λ±)μ Array κ°μ²΄ λ° Array.prototype μ μΆκ°ν©λλ€. |
Typed Arrays | ES2015 | μμ μ΄μ§ λ°μ΄ν°λ₯Ό λ€λ£¨κΈ° μν λ°°μ΄ μ μ¬ κ°μ²΄λ€(μ: Int8Array , Float32Array )κ³Ό ArrayBuffer λ₯Ό μ 곡ν©λλ€. |
Binary and Octal Literals | ES2015 | 2μ§μ(0b λλ 0B μ λμ¬) λ° 8μ§μ(0o λλ 0O μ λμ¬) μ«μ 리ν°λ΄ νκΈ°λ²μ μ§μν©λλ€. |
__proto__ in object literals (standardized) |
ES2015 | κ°μ²΄ 리ν°λ΄ λ΄μμ __proto__ μμ±μ μ¬μ©νμ¬ νλ‘ν νμ
μ μ€μ νλ κΈ°λ₯μ νμ€νν©λλ€. (κΆμ₯λμ§λ μμ) |
[Object.is ] |
ES2015 | λ κ°μ΄ κ°μ κ°μΈμ§ λΉκ΅νλ Object.is() μ μ λ©μλλ₯Ό μΆκ°ν©λλ€. (=== λ³΄λ€ NaN κ³Ό +0 , -0 μ²λ¦¬μ μμ΄ λ μ νν¨) |
Number properties and methods (e.g., Number.isFinite , Number.isNaN , Number.EPSILON ) |
ES2015 | μ«μ κ΄λ ¨ μ νΈλ¦¬ν° μμ(EPSILON , MAX_SAFE_INTEGER λ±) λ° λ©μλ(isFinite , isNaN , isInteger , isSafeInteger λ±)λ₯Ό Number κ°μ²΄μ μΆκ°ν©λλ€. |
Math methods (e.g., Math.trunc , Math.sign , Math.cbrt , Math.hypot ) |
ES2015 | μν μ°μ°μ μν λ€μν μ μ μ λ©μλλ€(trunc , sign , cbrt , log10 , hypot λ±)μ Math κ°μ²΄μ μΆκ°ν©λλ€. |
Unicode regular expression (u ) flag improvements |
ES2015 | μ κ·μ u νλκ·Έ μ¬μ© μ μ λμ½λ μ½λ ν¬μΈνΈ λ¨μλ‘ λ§€μΉνκ³ , μ λμ½λ μ΄μ€μΌμ΄ν μνμ€(\u{...} )λ₯Ό μ§μνλ λ± μ λμ½λ μ²λ¦¬λ₯Ό κ°μ ν©λλ€. |
Sticky (y ) flag for regular expressions |
ES2015 | μ κ·μ y (sticky) νλκ·Έλ₯Ό μΆκ°νμ¬, lastIndex μμ±μΌλ‘ μ§μ λ μμΉμμλ§ μΌμΉνλμ§ νμΈνκ³ , μΌμΉνλ©΄ lastIndex λ₯Ό κ°±μ ν©λλ€. |
Proposal | Description (νκΈ) |
---|---|
Legacy RegExp features in JavaScript | ꡬν λΈλΌμ°μ μμ μ§μλλ λΉνμ€ μ κ·μ κΈ°λ₯(μ: νΉμ μν©μμμ μΊ‘μ² κ·Έλ£Ή λμ)μ λͺ μΈμ ν¬ν¨νμ¬ μΉ νΈνμ±μ λμ λλ€. |
Temporal | λ μ§ λ° μκ° μ²λ¦¬λ₯Ό μν νλμ μ΄κ³ μ¬μ©νκΈ° μ¬μ΄ Temporal μ μ κ°μ²΄μ κ΄λ ¨ APIλ₯Ό λμ
ν©λλ€. (κΈ°μ‘΄ Date κ°μ²΄μ λ¨μ κ°μ ) |
Decorators | ν΄λμ€μ ν΄λμ€ λ©€λ²(λ©μλ, νλ, μ κ·Όμ)μ λ©ννλ‘κ·Έλλ° κΈ°λ₯μ μΆκ°ν μ μλ λ°μ½λ μ΄ν° λ¬Έλ²μ λμ ν©λλ€. |
JSON.parse source text access | JSON.parse κ° νμ±ν κ°κ³Ό ν¨κ» μλ³Έ JSON λ¬Έμμ΄μ ν΄λΉ λΆλΆμ κ°μ Έμ¬ μ μλ κΈ°λ₯μ μΆκ°ν©λλ€ (μ: reviver ν¨μμμ). |
Array.fromAsync |
λΉλκΈ° μ΄ν°λ¬λΈμ΄λ Promise λ₯Ό λ°ννλ μ΄ν°λ¬λΈλ‘λΆν° λ°°μ΄μ μμ±νλ Array.fromAsync() μ μ λ©μλλ₯Ό μΆκ°ν©λλ€. |
Explicit Resource Management | νμΌ νΈλ€, λ€νΈμν¬ μ°κ²° λ± μ¬μ© ν λͺ
μμ μΌλ‘ ν΄μ ν΄μΌ νλ 리μμ€λ₯Ό using λ° await using ꡬ문μ ν΅ν΄ μμ νκ² κ΄λ¦¬νλ κΈ°λ₯μ λμ
ν©λλ€. |
Decorator Metadata | λ°μ½λ μ΄ν°κ° ν΄λμ€ λ° λ©€λ²μ λ©νλ°μ΄ν°λ₯Ό μ°κ²°νκ³ μ κ·Όν μ μλλ‘ νλ νμ€μ μΈ λ°©λ²μ μ 곡ν©λλ€. |
Source Phase Imports | λͺ¨λ κ·Έλνλ₯Ό λΆμνλ λ¨κ³(μμ€ λ¨κ³)μμλ§ νμν λͺ¨λμ κ°μ Έμ¬ μ μλλ‘ νμ¬, λ°νμμλ ν΄λΉ λͺ¨λμ΄ λ‘λλμ§ μκ² ν©λλ€. (μ£Όλ‘ λΉλ λꡬλ λ¦°ν°μ©) |
Time Zone Canonicalization | Temporal APIμμ μ¬μ©λλ μκ°λ μλ³μλ₯Ό μ κ·ν(canonicalize)νλ λ°©μμ λͺ
νν ν©λλ€. |
Uint8Array to/from Base64 | Uint8Array μ Base64 λ¬Έμμ΄ κ°μ ν¨μ¨μ μΈ λ³νμ μν λ©μλλ₯Ό μΆκ°ν©λλ€. |
Dynamic Code Brand Checks | eval μ΄λ new Function λ±μΌλ‘ μμ±λ λμ μ½λμΈμ§ μ¬λΆλ₯Ό μμ νκ² νμΈν μ μλ λ°©λ²μ μ 곡ν©λλ€. |
Redeclarable global eval -introduced var s |
μ μ μ€μ½νμμ eval μ ν΅ν΄ μ μΈλ var λ³μκ° νΉμ 쑰건 νμ μ¬μ μΈλ μ μλλ‘ νλ λμμ λͺ
νν ν©λλ€. |
Atomics.pause |
μ€νλ½(spin lock)κ³Ό κ°μ λ°μ λκΈ°(busy-waiting) 루νμμ CPU μ¬μ©λμ μ€μ΄κ³ μ±λ₯μ κ°μ νκΈ° μν΄ μ§§μ μκ° λμ μ€νμ μΌμ μ€μ§νλ Atomics.pause() λ©μλλ₯Ό μΆκ°ν©λλ€. |
Error.isError |
μ£Όμ΄μ§ κ°μ΄ Error κ°μ²΄μΈμ§ μ¬λΆλ₯Ό μμ μ μΌλ‘ νμΈνλ Error.isError() μ μ λ©μλλ₯Ό μΆκ°ν©λλ€. |
Deferring Module Evaluation | λͺ¨λμ κ°μ Έμ¬ λ μ¦μ νκ°νμ§ μκ³ , μ€μ μ¬μ©λ λκΉμ§ νκ°λ₯Ό μ§μ°μν€λ κΈ°λ₯μ λμ ν©λλ€. (μ±λ₯ μ΅μ ν) |
Math.sumPrecise |
λΆλμμμ μ«μμ λ°°μ΄ ν©κ³λ₯Ό κ³μ°ν λ μ λ°λ μμ€μ μ΅μννλ Math.sumPrecise() λ©μλλ₯Ό μΆκ°ν©λλ€. |
ECMAScript Internationalization API Specification proposals
Proposals follow this process document. This list contains only stage 2 proposals and higher that have not yet been withdrawn/rejected, or become finished. Stage 2 indicates that the committee expects these features to be developed and eventually included in the standard.
Proposal | Author | Champion | Test262 Feature Flag | Last Presented |
---|---|---|---|---|
ShadowRealm | Caridy PatiΓ±o Jean-Francois Paradis |
Dave Herman Mark Miller Caridy PatiΓ±o Leo Balter Rick Waldron Chengzhong Wu |
ShadowRealm | FebruaryΒ 2024 |
Joint Iteration | Michael Ficarra | Michael Ficarra | Testing plan | JuneΒ 2024 |
Iterator Sequencing | Michael Ficarra | Michael Ficarra | β | OctoberΒ 2024 |
ESM Phase Imports | Luca Casonato Guy Bedford |
Luca Casonato Guy Bedford |
β | DecemberΒ 2024 |
Immutable ArrayBuffers | Mark Miller Peter Hoddie Richard Gibson Jack Works |
Mark Miller Peter Hoddie Richard Gibson Jack Works |
β | FebruaryΒ 2025 |
Non-extensible Applies to Private | Mark Miller Shu-yu Guo Chip Morningstar Erik Marks |
Mark Miller Shu-yu Guo Chip Morningstar Erik Marks |
β | AprilΒ 2025 |
Upsert |
Daniel Minor, Lauritz Thoresen Angeltveit, Jonas Haukenes, Sune Lianes, Vetle Larsen, Mathias Hop Ness | Daniel Minor | Testing plan | AprilΒ 2025 |
Proposal | Author | Champion | Stage 2.7 reviewers | Last Presented |
---|---|---|---|---|
function.sent metaproperty |
Allen Wirfs-Brock | HE Shi-Jun | JulyΒ 2019 | |
throw expressions |
Ron Buckton | Ron Buckton | FebruaryΒ 2024 | |
Function implementation hiding | Domenic Denicola Michael Ficarra |
Michael Ficarra | JuneΒ 2020 | |
collection normalization | Bradley Farias | Bradley Farias | JanuaryΒ 2019 | |
isTemplateObject | Mike Samuel, Krzysztof Kotowicz | Daniel Ehrenberg Jordan Harband |
AprilΒ 2024 | |
Dynamic Import Host Adjustment | Mike Samuel, Krzysztof Kotowicz | Krzysztof Kotowicz | DecemberΒ 2019 | |
Module Expressions | Surma Daniel Ehrenberg NicolΓ² Ribaudo |
Surma NicolΓ² Ribaudo |
NovemberΒ 2022 | |
Pipeline Operator | J.Β S. Choi James DiGioia Ron Buckton Tab Atkins |
J.Β S. Choi Ron Buckton Tab Atkins |
AugustΒ 2021 | |
Destructure Private Fields | Justin Ridgewell | Justin Ridgewell | DecemberΒ 2021 | |
RegExp Buffer Boundaries (\A , \z , \Z ) |
Ron Buckton | Ron Buckton | DecemberΒ 2021 | |
String.dedent | Misha Kaletsky Hemanth HM Justin Ridgewell |
Hemanth HM Justin Ridgewell |
JuneΒ 2022 | |
JSON.parseImmutable | Robin Ricard Richard Button NicolΓ² Ribaudo Ashley Claymore |
Robin Ricard Richard Button NicolΓ² Ribaudo Ashley Claymore |
JulyΒ 2022 | |
Module Declarations | Daniel Ehrenberg NicolΓ² Ribaudo |
Daniel Ehrenberg Mark Miller NicolΓ² Ribaudo |
NovemberΒ 2022 | |
Symbol Predicates | Robin Ricard Jordan Harband |
Ashley Claymore Jordan Harband |
MayΒ 2023 | |
Async Iterator helpers | Gus Caplan | Michael Ficarra Jonathan Keslin Kevin Gibbons |
JuneΒ 2024 | |
Iterator.range | Jack Works | Jack Works | AprilΒ 2024 | |
Async Context | Chengzhong Wu | Andreu Botella Chengzhong Wu Justin Ridgewell |
James M Snell Mark S. Miller |
AprilΒ 2024 |
"Discard" (void ) Bindings |
Ron Buckton | Ron Buckton | JuneΒ 2024 | |
Propagate active ScriptOrModule with JobCallback Record | Chengzhong Wu | Chengzhong Wu | JulyΒ 2024 | |
Structs: Fixed Layout Objects and Some Synchronization Primitives | Shu-yu Guo | Shu-yu Guo | Mark Miller Waldemar Horwat Yulia Startsev NicolΓ² Ribaudo |
OctoberΒ 2024 |
Extractors | Ron Buckton | Ron Buckton | Jordan Harband Justin Ridgewell |
OctoberΒ 2024 |
iterator chunking | Michael Ficarra | Michael Ficarra | Ashley Claymore Jordan Harband Jesse Alama |
OctoberΒ 2024 |
Error Stack Accessor | Jordan Harband | Jordan Harband Mark Miller |
NicolΓ² Ribaudo Michael Ficarra |
FebruaryΒ 2025 |
Deferred Re-exports | NicolΓ² Ribaudo | NicolΓ² Ribaudo | Chengzhong Wu Ashley Claymore |
AprilΒ 2025 |
The test262 feature flag links to a code search of tests using that feature flag, which may constitute complete or partial coverage. The β means there is no feature flag for tests yet.
See Contributing to ECMAScript and How We Work for the most up-to-date information on contributing to proposals to TC39 standards and how proposals advance.
Proposals that are Stage 1 and above must be transferred to the TC39 GitHub organization for discoverability and archival purposes. To onboard a proposal:
- Transfer your repository to the @tc39-transfer organization
- if you are a TC39 delegate, but not a member of that organization, please contact @LJHarb
- The Github Administrator, or one of the chairs, will transfer your repository to the TC39 organization the next chance they get.
Note that as part of the onboarding process your repository name may be normalized. Don't worry, repo redirects will continue to work as long as you never create a fork, or a new repository, with the same name - although Github Pages redirects will be broken (please update your links!).