Подтвердить что ты не робот

Пожалуйста, объясните это использование двоеточия в javascript

Я создаю библиотеку, и я часто проверяю результат вывода Closure Compiler, чтобы увидеть, как он это делает (у меня есть модульные тесты, но мне все же нравится видеть скомпилированный код для подсказок о том, как он может сжиматься лучше).

Итак, я нашел этот очень странный фрагмент кода, который я никогда раньше не видел.

variable : {
    some();
    code()
}

Примечание: это не литерал объекта! Кроме того, нет ? где-либо, что сделало бы его a ?: условный.
Этот код находится в регулярном функциональном блоке (IIFE).

variable, в этом случае является переменной undefined. Там нет кода, который делает его истинным, ложным или каким-либо другим, и просто чтобы убедиться, я положил туда console.log и действительно, я получил ReferenceError.

Пожалуйста, обратите внимание, что я тестирую свой код в IE8 тоже, так что это не только в современных браузерах. Кажется, это стандартный, простой старый javascript.

Так что дайте экспериментировать с ним. При запуске консоли Chrome я получаю следующее:

undeclaredVariable:{console.log('does this get logged?')} // yes it does.
trueValue:{console.log('what about this?')}               // same thing.
falseValue:{console.log('and this?')}                     // same thing.

но затем...

(true):{console.log('does this work too?')} // SyntaxError: Unexpected token :

... и...

so?{console.log('is this a conditional?')}:{alert(123)} // Unexpected token .

И что он делает?

thisThing:{console.log('is used to declare a variable?')}
thisThing // ReferenceError: thisThing is not defined

Пожалуйста, мне понравилось бы, если бы кто-нибудь мог объяснить мне, что должен делать этот код, или, по крайней мере, то, что он делает.

4b9b3361

Ответ 1

Это label

Предоставляет оператор с идентификатором, который вы можете ссылаться на использование break или continue.

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

Еще одно общее место, которое вы видите, - это когда люди используют замечательные и бесполезные javascript: для обработчиков событий.

Ответ 2

Это label (бит, заканчивающийся двоеточием), за которым следует блок (код, окруженный фигурными скобками).

Блоки обычно следуют управляющим операторам, таким как if(...) { /*block*/ }, но они также могут просто стоять самостоятельно, как в вашем примере.

Ярлыки позволяют вставлять несколько циклов за один раз с помощью continue или break; см. связанную страницу MDN для нескольких примеров, например:

var itemsPassed = 0;
var i, j;

top:
for (i = 0; i < items.length; i++){
  for (j = 0; j < tests.length; j++)
    if (!tests[j].pass(items[i]))
      continue top;
  itemsPassed++;
}

Здесь top: - это метка, к которой может перейти код внутри внутреннего цикла, чтобы выйти во внешний цикл.

Ответ 3

Ради кого-либо, кто не знает, что такое JSON, и видит двоеточие в том, что на самом деле может быть объектом, и пытается выяснить, что это такое, и находит это обсуждение, двоеточие также используется в JSON. Существует практика внедрения функций в объект JSON. Который мог бы ввести в заблуждение (Как это было для меня) для тех, кто впервые увидит это. (Все не рождаются со знанием JSON и JavaScript, запрограммированных в их мозги.) Итак, если вы оказались в этом обсуждении, и вы думаете, что каждый раз, когда вы видите двоеточие в JavaScript, это ярлык, возможно, это не так, Может быть, это двоеточие после метки, ИЛИ это может быть частью JSON. Фактически, двоеточие в JSON, показанное в виде строки, намного более распространено, чем метка. JSON в виде объекта будет отображаться как [object Object], при этом весь контент будет скрыт. Таким образом, если JSON не находится в форме строки, и вы показываете объект на консоли (console.log(object)), все, что вы увидите, это [object Object]. Обычная практика заключается в написании кода JavaScript, завернутого в объект. В этом случае вы увидите JSON в виде кода. Это, когда вы спросите себя: "Что это? И для чего эта двоеточие?" Тогда вы окажетесь на этом обсуждении и скажите, что это ярлык, когда он действительно является частью JSON. Тема этого обсуждения сформулирована следующим образом: "Пожалуйста, объясните это использование двоеточия в javascript", а затем "правильный ответ" отмечен как имеющий отношение к метке. Правильный ответ заключается в том, что двоеточие может использоваться более чем одним способом. Итак, если вы не знаете, что такое JSON, или думаете, что знаете (как я, но не совсем понял), читайте об этом здесь: JSON.org

Ответ 4

Это всего лишь label.

вы можете использовать continue [label name] (или break) в цикле, чтобы перейти к метке.

Больше объяснений того, что они есть, можно увидеть во всех средах.

Ответ 5

он используется для обозначения инструкции в jsvascript.check подробнее здесь.

обозначенный оператор можно использовать с break и continue позже.