Что делают три точки с запятой в выражении javascript? - PullRequest
8 голосов
/ 17 июля 2010

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

Самое близкое, что я видел для объяснения, это то, что он говорит компрессору Дина Эдвардса игнорировать эту строку.

;;; var someVar = 'Rebel';

Ответы [ 5 ]

26 голосов
/ 17 июля 2010

Это заставляет людей задавать вопросы о StackOverflow.

Кроме этого, он ничего не делает.

18 голосов
/ 17 июля 2010

Ничего. Совершенно ничего.

Три точки с запятой, десять точек с запятой, сто точек с запятой, все они интерпретируются с одинаковым результатом: ничего .

11 голосов
/ 19 июня 2013

Для кода отладки есть строки, начинающиеся с трех точек с запятой: это означает, что эти строки не должны появляться в производственной среде. Javascript запускается через компрессор или другой алгоритм, который удаляет ;;; строк при создании оптимизированного файла JS.

;;; console.log("only run this line when debugging!");

Как указано выше, три точки с запятой на самом деле ничего не делают в Javascript: он просто завершает три последовательных пустых оператора. Если был использован фактический комментарий

// console.log("only run this line when debugging!");

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

var DEBUG = true;
if(DEBUG){
     console.log("only run this line when debugging!");
}

но это немного громоздко и фактически добавляет ненужный код в ваш документ Javascript. Конечно, вы можете запустить JS через компрессор, чтобы удалить условия DEBUG, но в этот момент вы можете просто использовать метод ;;;, который проще.

См. этот вопрос для примера из реальной жизни. Кстати, я думаю, что синтаксис исходит от emacs .

8 голосов
/ 17 июля 2010

Завершает пустой оператор 3 раза.

1 голос
/ 17 июля 2010

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

...