В чем разница между `new RegExp ()` и `RegExp ()`

В чем разница между `new RegExp ()` и `RegExp ()`

Между ними есть разница, а именно, когда аргумент уже является регулярным выражением. В этом случае RegExp(someRe) просто возвращает аргумент, тогда как new RegExp(someRe) создает новый новый объект RegExp из source аргумента, таким образом теряя свое внутреннее состояние.

Иллюстрация:

 a = /./g console.log(a.exec('hello')[0]) r = new RegExp(a) console.log(r.exec('hello')[0]) // h again console.log(a === r) console.log('------') a = /./g console.log(a.exec('hello')[0]) r = RegExp(a) console.log(r.exec('hello')[0]) // e console.log(a === r) 

См. Http://www.ecma-international.org/ecma-262/8.0/#sec-regexp-constructor , шаги 3b и 5.

Не очень распространенный вариант использования, но о чем стоит знать.

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector