#javascript #operator-keyword
#javascript #operator-ключевое слово
Вопрос:
Я выполняю некоторую работу с API синтаксического анализа в Spidermonkey. В документах показано, что существует двоичный оператор ..
. У кого-нибудь есть какие-нибудь идеи, что это такое / делает? Я хотел бы знать. Я никогда не видел его раньше. Если бы меня заставили угадывать, я бы сказал, что это что-то с E4X, но это только потому, что я ничего не знаю о E4X.
Комментарии:
1. есть тег под названием «точка-dot»? потрясающе. 🙂
2. @RPM1984: Теперь стало известно, что его создал mattbasta. Редактировать : И это продолжалось недолго.
3. двумя строками ниже раздела в связанном документе с .. написано «Примечание: оператор .. специфичен для E4X».
Ответ №1:
Не путать с десятичной запятой и точкой:
var val= 1000..toExponential()
Комментарии:
1. Это на некоторое время сбило меня с толку — казалось, что он имеет тот же эффект, что и
(1000).method()
, поэтому я подумал, что это специальный оператор. Десятичное число мне не пришло в голову. Приятно!
Ответ №2:
Это оператор E4X.
Из https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide:Processing_XML_with_E4X:
В то время как . оператор обращается к прямым дочерним элементам данного узла, оператор .. обращается ко всем дочерним элементам независимо от того, насколько глубоко вложен:
Комментарии:
1. Поскольку ссылка недоступна: web.archive.org/web/20210514140120/https ://…
Ответ №3:
Что-то вроде:
255..toString(16);
Первая точка на самом деле является десятичной точкой, просто дайте компилятору JavaScript знать, что вторая точка хочет вызвать свойство или метод. И 255.toString(16)
приводит компилятор JavaScript в замешательство (идентификатор начинается сразу после десятичного числового литерала).
Комментарии:
1. Совет:
.
оператор имеет более высокий приоритет, чем унарный-
или unary, которые преобразуют свои операнды в
Number
.typeof(-255..toString())
есть'number'
. То есть он анализируется так, как если бы это былоtypeof(-(255..toString()))
, эффективноtypeof(-(Number(255.toString())))
.
Ответ №4:
Это действительно E4X. Он выполняет то же самое, что и оператор с одной точкой, который выбирает дочерних элементов, но выбирает всех потомков. (Это по аналогии с /
оператором XPath, выбирающим дочерние элементы элемента, которые соответствуют селектору, и //
выбирающим всех потомков, которые соответствуют селектору.)