Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.09.2012, 16:41
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Допустимо ли использовать символ таба в строках?
В общем надо разобраться кто виноват. Скрипт пропускается через два минификатора. Один на этапе сборки компонента, через 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 должен избегать любой обработки строк в кавычках?
Ответить с цитированием
  #2 (permalink)  
Старый 25.09.2012, 18:35
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

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

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


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

П.С. В исходном коде примера там табуляция, а не пробел. Если нажать "Цитата", вы это увидите.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #3 (permalink)  
Старый 25.09.2012, 23:41
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Предполагается наличие ';' в IE7- FINoM (X)HTML/CSS 5 25.08.2012 16:05