Что такое оператор с двойной точкой (..) в Javascript?

#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, выбирающим дочерние элементы элемента, которые соответствуют селектору, и // выбирающим всех потомков, которые соответствуют селектору.)