Вход

Просмотр полной версии : Вопрос про отображение обратного слеша \


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-последовательность не найдена, остаются только следующие за слешем символы

И правильно ли я понимаю что тогда внутри 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-символа. Следовательно, невозможно ввести его непосредственно в скрипте. Если требуется ввести обратную косую черту, необходимо указать два знака вместе (\\).