вторник, 29 января 2013 г.

Перевод строки: трактовка Ruby vs JavaScript

Как известно, в обоих языках можно опускать точку с запятой в конце строки, однако разница есть, и она существенная: в Ruby проверяется, можно ли текущее выражение завершить, и если да — завершается, тогда как в JS — можно ли продолжить, и если да...

Парсеру, надо полагать, оба варианта равноудобны, но для человеческого восприятия гораздо удобней вариант Ruby (я, например, в JavaScript всегда использую точку с запятой, чтоб не путаться, а в Ruby — никогда). Почему в JS сделано так? Думаю, разгадка проста, как безблагодатность — обратная совместимость — когда-то же «;» пропускать было нельзя и, соответственно, простой перевод строки обязан был трактоваться как пробел. В Ruby же эта фича «by design».