Допустимо ли использовать символ таба в строках?
В общем надо разобраться кто виноват. Скрипт пропускается через два минификатора. Один на этапе сборки компонента, через 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 должен избегать любой обработки строк в кавычках? |
Можно. В спецификации сказано, что любой символ между ковычками интерпретируется как символ строки, за исключением некоторых символов.
UglifyJS заменяет EscapeSequence табулюции на реальную табуляцию так, как в исходном коде такой символ будет в два раза меньше. Соответственно такой код будет верный: alert(' ' === '\t') http://es5.github.com/#x7.8.4 П.С. В исходном коде примера там табуляция, а не пробел. Если нажать "Цитата", вы это увидите. |
Спасибо за ссылку и пояснение, уже отрепортил в JSMin на гитхабе. Вот только проект выглядит слегка заброшенным...
|
Часовой пояс GMT +3, время: 15:15. |