Javascript-форум (https://javascript.ru/forum/)
-   Учебные материалы (https://javascript.ru/forum/study/)
-   -   Вопрос про отображение обратного слеша \ (https://javascript.ru/forum/study/53682-vopros-pro-otobrazhenie-obratnogo-slesha-%5C.html)

Momon 13.02.2015 14:27

Вопрос про отображение обратного слеша \
 
Извиняюсь конечно за, наверное глупый вопрос, но почему когда:
// я просто вывожу строку с обратным слешем через alert
alert("строка\строка"); // => "строкастрока" обратный слеш скрыт

// но когда такая же строка формируется из ввода пользователя
var str = prompt("Введите строку с обратным слешем"); // вводим "строка\строка"
alert(str); // => "строка\строка" обратный слеш отображается
С вводом в input такая же история, т.е. при вводе пользователя что то экранирует обратный слеш? И правильно ли я понимаю что тогда внутри str на самом деле такая строка: "строка\\строка"? И как это можно увидеть?

Octane 13.02.2015 15:07

alert('\с' === 'с')
alert('\n' === 'n')

если escape-последовательность не найдена, остаются только следующие за слешем символы

Цитата:

Сообщение от Momon
И правильно ли я понимаю что тогда внутри str на самом деле такая строка: "строка\\строка"? И как это можно увидеть?

нет
если пользователь введет «a\b», input.value.length будет 3
если ты запишешь str = 'a\\b', str.length тоже будет 3
при интерпретации строки, escape-последовательности заменяются на соответствующие символы

Momon 13.02.2015 15:25

Octane,
Я не понимаю, почему в одном случае \n не интерпретируется как перевод строки:
var str = prompt(); // если пользователь введет "строка\nстрока"
alert(str); // выведет "строка\nстрока"
А в другом случае всё как следует интерпретируется:
alert("стркоа\nстрока");
Вопрос: может ли пользователь ввести escape последовательность которая будет работать? И почему она не работает?

Momon 13.02.2015 16:37

Ладно, наверно для практического вопроса данный раздел не подходит.

Теория такова:
Знак обратной косой черты сам по себе используется в качестве escape-символа. Следовательно, невозможно ввести его непосредственно в скрипте. Если требуется ввести обратную косую черту, необходимо указать два знака вместе (\\).


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