JavaScript

Microsoft Edge for Windows 10 extends the JavaScript enhancements of Internet Explorer 11 with new support for features from the latest ECMAScript 6 (ES6) draft specification.

Classes

ES6 introduces a syntax for declaring classes. A class allows you to create new objects using prototype-based inheritance, constructors, instance methods, and static methods. For more information about classes, see Classes in JavaScript: Exploring the Implementation in Chakra.

Promises

Promises provide you with a mechanism to schedule work to be done on a value that has not yet been computed. It is an abstraction for managing interactions with asynchronous APIs. Promises allow easier and cleaner asynchronous coding.

Arrow Function

The arrow (=>) function provides you with a shorthand for the function keyword with lexical "this" binding. For more information, see Functions (JavaScript).

Math, Number, Object, String

ES6 introduces dozens of new built-in utility functions and properties to help you inspect and manipulate data. This includes:

  • New Math related functions: sign, trunc, sinh, cosh, tanh, asinh, acosh, atanh, log10, log2, hypot, fround, clz32, cbrt, log1p, and expm1
  • New methods and properties on Number: isFinite, isInteger, isSafeInteger, isNaN, EPSILON, MIN_SAFE_INTEGER, and MAX_SAFE_INTEGER
  • New methods on Object: assign, is, getOwnPropertySymbols, and setPrototypeOf
  • New methods on String: String.raw and String.fromCodePoint
  • New methods on String.prototype: codePointAt, normalize, repeat, startsWith, endsWith, and contains

Object Literal Enhancements

Enhancements to object literal notation in ES6 include the addition of computed properties, concise method definitions, and short-hand for properties whose value is initialized to a same-named variable. For more information on object literals, see Creating Objects (JavaScript).

Spread

ES6 introduces a new operator called the spread operator. This operator expands iterable expressions into individual arguments. For example, a.b(...array) is roughly the same as a.b.apply(a, array). For more information, see Functions (JavaScript).

Template Strings

Template strings are string literals that allow for expressions to be evaluated and concatenated with the string literal. To construct a template string, use the grave accent, or back-tick character (`), instead of single or double quotes.

Symbols

The symbol object allows properties to be added to existing objects without the possibility of interference with the existing properties, unintended visibility, or with other uncoordinated additions by any other code.

Proxies

The new proxy feature enables you to implement objects with new kinds of custom behavior.

Weak Set

A weak set is a set of objects such that those objects will be collected if they are not referenced anywhere else.

Iterators

Iterators enable iteration over iterable objects (including arrays, array-like objects, iterators, and generators), invoking a custom iteration hook with statements to be executed for the value of each distinct property.