ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Categories:

JavaScript: вызов функции без скобок

В комментариях к учебнику по JavaScript увидел что-то вроде следующего:

let a = "телефон";

a = a.split``.reverse();

alert( a ); // н,о,ф,е,л,е,т

Это работает у меня в браузере. Что тут происходит? Строка a трансформируется в массив символов с помощью метода split, после чего в полученном массиве элементы (символы) переставляются так, чтобы они шли в обратном порядке, с помощью метода reverse. В конце массив символов a выводится на экран с помощью функции alert.

Что меня удивило? Я обратил внимание на вторую строку этого кода, в которой метод split вызывается без скобок и это работает! Ориентируясь на знания, полученные в процессе чтения учебника, я бы написал вторую строку вот так (одним из трех следующих способов, все они работают):

a = a.split(``).reverse(); // с обратными кавычками

a = a.split('').reverse(); // с одинарными кавычками

a = a.split("").reverse(); // с двойными кавычками

Но, как оказалось, можно и без скобок! Правда, без скобок работает только вариант с обратными кавычками:

a = a.split``.reverse(); // работает

a = a.split''.reverse(); // ошибка

a = a.split"".reverse(); // ошибка

Строковые литералы, обособленные обратными кавычками, называют шаблонными строками (литералами):

https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Template_literals

Это я, в принципе, уже знал и ранее. Но, как оказалось, если перед шаблонной строкой (литералом) есть какое-то выражение, то такая шаблонная строка называется теговым шаблоном (по-английски «tagged template»). В этом случае выражение (тег) перед шаблонной строкой (обычно — функция) вызывается с этой шаблонной строкой в качестве параметра. Об этом сказано по приведенной ссылке.

Об этом рассказано и в подразделе 5.3 «Строки» учебника, но там я это хоть и прочитал, но не запомнил. Видимо, потому, что в этом подразделе к этому параграфу нет никакого внятного примера.
Tags: Образование, Программирование
Subscribe

Recent Posts from This Journal

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments