Недавно у нас была ошибка, после того как другой разработчик изменил литерал RegExp на вызов конструктора, и мне было интересно, почему вообще есть какая-то разница. {{1} } Точный код был
var parts = new RegExp("/rt:([^@]+)@(\d+)/").exec(tag);
по сравнению с оригиналом
var parts = /rt:([^@]+)@(\d+)/.exec(tag);
. Когда тег
- это, например, rt: 60C1C036-42FA-4073-B10B-1969BD2358FB @ 00000000077
, первый ( buggy) возвращает null
, а второй возвращает ["rt: 60C1C036-42FA-4073-B10B-1969BD2358FB @ 00000000077", "60C1C036-42FA-4073-B10B-1969BD2358FB", " 00000000077 "]
Излишне говорить, что я отменил изменение, но я хотел бы знать, почему вообще существует такая разница.