NativeScript | Desktop browsers | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Feature name► | Current browser97% | NS 6.5 Android v881% |
NS 7.0 Android v881% |
NS 8.0 Android v881% |
NS 6.5 iOS JSC68% |
NS 7.0 iOS v887% |
NS 8.0 iOS v894% |
CH 8999% | CH 9099% | SF 14 Beta91% | SF TP93% | |
2016 features | ||||||||||||
§exponentiation (**) operator ![]() | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | |
§basic supportc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§assignmentc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§early syntax error for unary negation without parensc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Array.prototype.includes ![]() | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | |
§Array.prototype.includes ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Array.prototype.includes is genericc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§%TypedArray%.prototype.includes ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
2016 misc | ||||||||||||
§generator functions can't be used with "new" ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§generator throw() caught by inner generator ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§strict fn w/ non-strict non-simple params is error[3]c | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§nested rest destructuring, declarations ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§nested rest destructuring, parameters[5]c | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Proxy, "enumerate" handler removed ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Proxy internal calls, Array.prototype.includesc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
2017 features | ||||||||||||
§Object static methods► | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | |
§Object.values ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Object.entries ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Object.getOwnPropertyDescriptors ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Object.getOwnPropertyDescriptors doesn't provide undefined descriptorsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§String padding► | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | |
§String.prototype.padStart ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§String.prototype.padEnd ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§trailing commas in function syntax ![]() | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | |
§in parameter lists ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§in argument lists ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§async functions ![]() | 14/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | |
§returnc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§throwc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§no line break between async and functionc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§no "prototype" propertyc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§await ![]() | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§await, rejectionc | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§must await a valuec | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§can await non-Promise valuesc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§cannot await in parametersc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§async methods, object literalsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§async methods, classesc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§async arrow functions in methods, classesc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§async arrow functionsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§correct prototype chainc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§async function prototype, Symbol.toStringTagc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§async function constructorc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§shared memory and atomics► | 11/17 | 17/17 | 17/17 | 17/17 | 0/17 | 17/17 | 16/17 | 17/17 | 17/17 | 0/17 | 0/17 | |
§SharedArrayBuffer ![]() | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§SharedArrayBuffer[Symbol.species]c | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§SharedArrayBuffer.prototype.byteLength ![]() | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§SharedArrayBuffer.prototype.slice ![]() | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§SharedArrayBuffer.prototype[Symbol.toStringTag]c | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§Atomics.add ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§Atomics.and ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§Atomics.compareExchange ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§Atomics.exchange ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§Atomics.wait ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§Atomics.wake ![]() | No | Yes | Yes | Yes | No | Yes | No | Yes | Yes | No[7] | No[7] | |
§Atomics.isLockFree ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§Atomics.load ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§Atomics.or ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§Atomics.store ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§Atomics.sub ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
§Atomics.xor ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No[7] | No[7] | |
2017 misc | ||||||||||||
§RegExp "u" flag, case foldingc | Yes | No | No | No | Yes | No | No | Yes | Yes | Yes | Yes | |
§arguments.caller removed ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
2017 annex b | ||||||||||||
§Object.prototype getter/setter methods► | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | |
§__defineGetter__ ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__defineGetter__, symbolsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__defineGetter__, ToObject(this)c | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__defineSetter__ ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__defineSetter__, symbolsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__defineSetter__, ToObject(this)c | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__lookupGetter__ ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__lookupGetter__, prototype chainc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__lookupGetter__, symbolsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__lookupGetter__, ToObject(this)c | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__lookupGetter__, data properties can shadow accessorsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__lookupSetter__ ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__lookupSetter__, prototype chainc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__lookupSetter__, symbolsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__lookupSetter__, ToObject(this)c | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__lookupSetter__, data properties can shadow accessorsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Proxy internal calls, getter/setter methods► | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | |
§__defineGetter__c | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__defineSetter__c | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__lookupGetter__c | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§__lookupSetter__c | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§assignments allowed in for-in head in non-strict mode ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
2018 features | ||||||||||||
§object rest/spread properties► | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | |
§object rest propertiesc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§object spread propertiesc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Promise.prototype.finally ![]() | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 2/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | |
§basic supportc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§don't change resolution valuec | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§change rejection valuec | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | |
§s (dotAll) flag for regular expressions ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§RegExp named capture groups ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§RegExp Lookbehind Assertions ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No | No | |
§RegExp Unicode Property Escapes ![]() | Yes | No | No | No | Yes | No | No | Yes | Yes | Yes | Yes | |
§Asynchronous Iterators► | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | |
§async generatorsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§for-await-of loops ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
2018 misc | ||||||||||||
§Proxy "ownKeys" handler, duplicate keys for non-extensible targets ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§template literal revisionc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
2019 features | ||||||||||||
§Object.fromEntries ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§string trimming► | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | |
§String.prototype.trimLeft ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§String.prototype.trimRight ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§String.prototype.trimStart ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§String.prototype.trimEnd ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Array.prototype.{flat, flatMap}[8]► | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | |
§Array.prototype.flat ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Array.prototype.flatMap ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§flat and flatMap in Array.prototype[@@unscopables]c | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
2019 misc | ||||||||||||
§optional catch binding► | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | |
§basicc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§awaitc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§yieldc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Symbol.prototype.description ![]() | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | |
§basicc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§empty descriptionc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§undefined descriptionc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Function.prototype.toString revision ![]() | 7/7 | 7/7 | 7/7 | 7/7 | 4/7 | 7/7 | 7/7 | 7/7 | 7/7 | 4/7 | 4/7 | |
§functions created with the Function constructorc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | ? | ? | |
§arrowsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§[native code]c | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§class expression with implicit constructorc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§class expression with explicit constructorc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§unicode escape sequences in identifiersc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | ? | ? | |
§methods and computed property namesc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | ? | ? | |
§JSON superset► | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | |
§LINE SEPARATOR can appear in string literalsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§PARAGRAPH SEPARATOR can appear in string literalsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§Well-formed JSON.stringify ![]() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
2020 features | ||||||||||||
§String.prototype.matchAll ![]() | 2/2 | 2/2 | 2/2 | 2/2 | 1/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | |
§basic functionalityc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§throws on non-global regexc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | |
§BigInt ![]() | 8/8 | 8/8 | 8/8 | 8/8 | 0/8 | 8/8 | 8/8 | 8/8 | 8/8 | 4/8 | 8/8 | |
§basic functionalityc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | |
§constructorc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | |
§BigInt.asUintNc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | |
§BigInt.asIntNc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | |
§BigInt64Arrayc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | ? | Yes | |
§BigUint64Arrayc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | ? | Yes | |
§DataView.prototype.getBigInt64c | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | ? | Yes | |
§DataView.prototype.getBigUint64c | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | ? | Yes | |
§Promise.allSettled ![]() | Yes | ? | ? | ? | ? | ? | ? | Yes | Yes | Yes | Yes | |
§globalThis ![]() | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | |
§"globalThis" global property is global objectc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§"globalThis" global property has correct property descriptorc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
§optional chaining operator (?.) ![]() | 5/5 | 4/5 | 4/5 | 4/5 | 0/5 | 4/5 | 4/5 | 4/5 | 4/5 | 5/5 | 5/5 | |
§optional property accessc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | |
§optional bracket accessc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | |
§optional method callc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | |
§optional function callc | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | |
§spread parameters after optional chainingc | Yes | No | No | No | No | No | No | No | No | Yes | Yes | |
§nullish coalescing operator (??) ![]() | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | |
2021 features | ||||||||||||
§String.prototype.replaceAll ![]() | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | |
§Promise.any ![]() | 2/2 | 0/2 | 0/2 | 0/2 | 0/2 | 0/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | |
§fulfillmentc | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | |
§AggregateErrorc | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | |
§WeakReferences► | 2/2 | 0/2 | 0/2 | 0/2 | 0/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | |
§WeakRef minimal supportc | Yes | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | |
§FinalizationRegistry minimal supportc | Yes | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | |
§Logical Assignment► | 9/9 | 0/9 | 0/9 | 0/9 | 0/9 | 0/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | |
§||= basic supportc | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | |
§||= short-circuiting behaviourc | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | |
§||= setter not unecessarily invokedc | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | |
§&&= basic supportc | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | |
§&&= short-circuiting behaviourc | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | |
§&&= setter not unecessarily invokedc | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | |
§??= basic supportc | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | |
§??= short-circuiting behaviourc | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | |
§??= setter not unecessarily invokedc | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | |
§numeric separatorsc | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
[1] TC39 meeting notes from July 28, 2015.
[2] 'Semantics of yield* in throw case' GitHub issue in ECMA-262 repo.
[3] TC39 meeting notes from July 29, 2015.
[4] TC39 meeting notes from July 28, 2015.
[5] TC39 meeting notes from July 28, 2015.
[8] Name of Array.prototype.flatten()
changed to Array.prototype.flat()
due to web compatibility issues.