# Disallow Symbol Constructor (no-new-symbol)

The Symbol constructor is not intended to be used with the new operator, but to be called as a function.

var foo = new Symbol("foo");

This throws a TypeError exception.

Rule Details

This rule is aimed at preventing the accidental calling of Symbol with the new operator.

The following patterns are considered problems:

/*eslint no-new-symbol: 2*/
/*eslint-env es6*/

var foo = new Symbol('foo');                    /*error `Symbol` cannot be called as a constructor. */

The following patterns are not considered problems:

/*eslint no-new-symbol: 2*/
/*eslint-env es6*/

var foo = Symbol('foo');


// Ignores shadowed Symbol.
function bar(Symbol) {
    const baz = new Symbol("baz");
}

When Not To Use It

This rule should not be used in ES3/5 environments.

Further Reading

Version

This rule was introduced in ESLint 2.0.0-beta.1.

Resources