Что означает этот синтаксис JAVASCRIPT

adnaan.zohran спросил: 31 июля 2018 в 09:53 в: javascript

Я просматривал некоторые открытые исходные коды, когда я наткнулся на эту библиотеку: он.

В исходном коде, написанном в javascript, он имеет следующие утверждения:

var regexInvalidRawCodePoint = /<%= regexInvalidRawCodePoints %>/;

Я не могу понять, что это значит. Пробовал также его искать.

Btw это не стандартное регулярное выражение. Сценарий не пытается сопоставить regexInvalidRawCodePoint.

2 ответа

Есть решение
t.niese ответил: 31 июля 2018 в 03:36

В package.json у вас есть скрипт сборки:

"build": "grunt build"

Этот скрипт сборки создаст he.js

В процессе сборки строка:

var regexInvalidRawCodePoint = /<%= regexInvalidRawCodePoints %>/;

станет

var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;

Ответственная задача сборки grunt - template, в которой используется скрипт ./scripts/export-data.js. Этот скрипт содержит:

'regexInvalidRawCodePoints': require('./invalid-code-points-regex.js'),

<%= regexInvalidRawCodePoints %> - это заполнитель, который будет заменен содержимым ./invalid-code-points-regex.js

Это не специфично для JavaScript, но синтаксис-заполнитель определяется, например, язык шаблонов.

Steven Spungin ответил: 31 июля 2018 в 11:29
  • regexInvalidRawCodePoint - это переменная
  • /<%= regexInvalidRawCodePoints %>/ - это регулярное выражение (без параметров)

<% = и% > не являются Javascript. Это теги, которые заменяют regexInvalidRawCodePoints значением regexInvalidRawCodePoints при предварительной обработке до оценки javascript.

Таким образом, значение из regexInvalidRawCodePoint будет использоваться в качестве REGEX после предварительной обработки, и это регулярное выражение будет присвоено переменной regexInvalidRawCodePoint