Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нужно ли ставить ; в JS? (https://javascript.ru/forum/misc/33788-nuzhno-li-stavit-%3B-v-js.html)

tenshi 10.12.2012 00:48

> пруф или сам знаешь кто

я тебе рассказал как работают парсеры. не веришь - открой исходники и посмотри.

> var q = 1 var w = 11

я не стал усложнять описание рассказом про контексты. перевод строки меняет контекст на "продолжение выражения с новой строки". и только в этом контексте лексема "var" завершает предыдущее выражение и начинает новое. в контексте "незавершённое выражение" она кидает исключение. а семиколон - это просто ничего не делающий оператор, а никакой не "разделитель выражений"

if( false ) ; else alert(1)
if( false ) {} else alert(1)

nerv_ 10.12.2012 01:11

Цитата:

Сообщение от Shitbox2
JS работает и без ; в конце строки и лично мне удобнее их вовсе не ставить, но есть подозрения, что многие оптимизаторы кода заглохнут из-за этого. Опасения оправданы?

точки с запятой - это как бриться по утрам, приводиться себя в порядок. Побрился, вышел на улицу и тебе все деФченки улыбаются :) А не побрился..., фу таким быть :p

vashurin 10.12.2012 08:20

Цитата:

Сообщение от Shitbox2 (Сообщение 220221)
JS работает и без ; в конце строки и лично мне удобнее их вовсе не ставить, но есть подозрения, что многие оптимизаторы кода заглохнут из-за этого. Опасения оправданы?

Ну и в дополнение, какой оптимизатор посоветуете? Есть ли он онлайн?

Заглохнут. Да и понять будет не возможно, что вообще написано.
Вот 2 кода, первый без ";", а второй с ";". Первый не читаемый и не рабочий. Второй читаем и работает.
function A(){
	this.method1 = function(){alert('ok')}
}
var a=new A (function(){alert('ok')})()


function A(){
	this.method1 = function(){alert('ok');}
}
var a=new A; (function(){alert('ok')})();

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

tenshi 10.12.2012 11:23

> точки с запятой - это как бриться по утрам, приводиться себя в порядок. Побрился, вышел на улицу и тебе все деФченки улыбаются А не побрился..., фу таким быть

ну так и побрей свой код от этой щетины ;;;;

> покажи ка замеры тестирования скорости

а у самого ручки отсохли? http://jsperf.com/semicolons

> ответь ка из каких токенов состоит лексема декларации функции, просто я вижу ты разбираешься, а я вот все понять этот момент ни как не могу) не поможешь братишка)?

читай. вникай. развивайся.

> А вот тут ты нам наглядно продемонстрировал что это не просто ни чего не делающий оператор, а именно разделитель выражений

в таком случае {} - тоже всего-лишь разделитель выражений

tenshi 10.12.2012 11:27

Цитата:

Сообщение от vashurin (Сообщение 220589)
Притом первый код я разбил на строки, а так, это был реальный кусок кода, который был вытянут в строку после сжатия какой то программой оптимизации.

ну так не используй эту "какую-то" программу оптимизации.

vashurin 10.12.2012 11:33

Цитата:

Сообщение от tenshi (Сообщение 220602)
ну так не используй эту "какую-то" программу оптимизации.

:) tenshi, вы работали когда нибудь с чужим кодом?
Код был не мой, и сжимал его программой не я (даже не знаю чем вообще его сжимали). Просто будучи фрилансером, однажды разбирал чужой код. Для клиента была тайна, покрытая мраком, почем после оптимизации рабочий код, переставал работать. А автор кода "канул в лету". Оказалась как раз дело в ";".

Хотя, tenshi, лучше не ставьте ";", честное слово, мне больше денег будет . :)

tenshi 10.12.2012 11:39

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


Часовой пояс GMT +3, время: 02:54.