Рубрики
Без рубрики

Операторы с меткой JavaScript

Учебник об очень редко используемой функции JavaScript: помеченные операторы

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

Недавно я видел, как эта функция использовалась в Svelte для включения реактивных объявлений, которые пересчитываются всякий раз, когда переменные, объявленные в инструкции, изменяются:

$: console.log(variable)

Они также позволяют использовать блок операторов , еще одну функцию JavaScript, которая позволяет определять блок всякий раз, когда вы можете определить оператор:

$: {
  console.log(variable)
  console.log('another thing')
  //...
}

Это может показаться странным, но это правильный JavaScript. Этот блок инструкций присваивается метке $ |/ .

Компилятор Svelte внутренне будет использовать это для включения реактивных объявлений.

Я никогда не использовал эту функцию где-либо еще, но основной вариант использования – это выход из оператора, который не является ближайшим замкнутым циклом или переключателем.

Вот простой пример, чтобы объяснить, что я имею в виду.

Вызов прерывания в любой из этих точек прерывается из коммутатора, чтобы избежать запуска других случаев:

for (let y = 0; y < 3; y++) {
  switch (y) {
    case 0:
      console.log(0)
      break
    case 1:
      console.log(1)
      break
    case 2:
      console.log(2)
      break
  }
}

Это приведет к печати 0 1 2 к пульту, как и ожидалось.

Но что, если мы захотим вырваться из для , когда достигнем случая 1 ? Вот как это делается:

loop: for (let y = 0; y < 3; y++) {
  switch (y) {
    case 0:
      console.log(0)
      break
    case 1:
      console.log(1)
      break loop
    case 2:
      console.log(2)
      break
  }
}

Это приведет к печати 0 1 к пульту.

Оригинал: “https://flaviocopes.com/javascript-labeled-statements/”