They work the same, but new
should be preferred for consistency with other constructors.
Enforces the use of new
for following builtins:
Object
Array
ArrayBuffer
BigInt64Array
BigUint64Array
DataView
Date
Error
Float32Array
Float64Array
Function
Int8Array
Int16Array
Int32Array
Map
WeakMap
Set
WeakSet
Promise
RegExp
Uint8Array
Uint16Array
Uint32Array
Uint8ClampedArray
Disallows the use of new
for following builtins.
String
Number
Boolean
Symbol
BigInt
These should not use
new
as that would create object wrappers for the primitive values, which is not what you want. However, withoutnew
they can be useful for coercing a value to that type.
This rule is fixable, except new String()
, new Number()
, and new Boolean()
, they return wrapped object.
const list = Array(10);
const now = Date();
const map = Map([
['foo', 'bar']
]);
const list = new Array(10);
const now = new Date();
const map = new Map([
['foo', 'bar']
]);