Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Допустимо ли использовать символ таба в строках? (https://javascript.ru/forum/misc/31904-dopustimo-li-ispolzovat-simvol-taba-v-strokakh.html)

danik.js 25.09.2012 16:41

Допустимо ли использовать символ таба в строках?
 
В общем надо разобраться кто виноват. Скрипт пропускается через два минификатора. Один на этапе сборки компонента, через UglifyJS, второй - при работе системы, через JSMin.php :
if ($c === null || $c === "\n" || ord($c) >= self::ORD_SPACE) {
  return $c;
}

    return ' ';


Так вот, первый заменяет строку типа var str = "\t" на var str = "{тут реальный таб}" , а второй заменяет любые символы "диапазона" Control Chars (ниже SPACE по таблице) на пробел.

Вопрос - кто виноват? Можно ли использовать в строках спец-символы в явном виде (не в виде мнемоник \t, \n и тд)
Или же JSMin.php должен избегать любой обработки строк в кавычках?

Nekromancer 25.09.2012 18:35

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

UglifyJS заменяет EscapeSequence табулюции на реальную табуляцию так, как в исходном коде такой символ будет в два раза меньше. Соответственно такой код будет верный:
alert('	' === '\t')


http://es5.github.com/#x7.8.4

П.С. В исходном коде примера там табуляция, а не пробел. Если нажать "Цитата", вы это увидите.

danik.js 25.09.2012 23:41

Спасибо за ссылку и пояснение, уже отрепортил в JSMin на гитхабе. Вот только проект выглядит слегка заброшенным...


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