Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.02.2015, 14:27
Аватар для Momon
Аспирант
Отправить личное сообщение для Momon Посмотреть профиль Найти все сообщения от Momon
 
Регистрация: 02.12.2014
Сообщений: 72

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

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

Последний раз редактировалось Momon, 13.02.2015 в 14:37.
Ответить с цитированием
  #2 (permalink)  
Старый 13.02.2015, 15:07
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

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

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

Сообщение от Momon
И правильно ли я понимаю что тогда внутри str на самом деле такая строка: "строка\\строка"? И как это можно увидеть?
нет
если пользователь введет «a\b», input.value.length будет 3
если ты запишешь str = 'a\\b', str.length тоже будет 3
при интерпретации строки, escape-последовательности заменяются на соответствующие символы
Ответить с цитированием
  #3 (permalink)  
Старый 13.02.2015, 15:25
Аватар для Momon
Аспирант
Отправить личное сообщение для Momon Посмотреть профиль Найти все сообщения от Momon
 
Регистрация: 02.12.2014
Сообщений: 72

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

Последний раз редактировалось Momon, 13.02.2015 в 16:05.
Ответить с цитированием
  #4 (permalink)  
Старый 13.02.2015, 16:37
Аватар для Momon
Аспирант
Отправить личное сообщение для Momon Посмотреть профиль Найти все сообщения от Momon
 
Регистрация: 02.12.2014
Сообщений: 72

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

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

Последний раз редактировалось Momon, 13.02.2015 в 16:44.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
еще один вопрос про кнопки и события f0rzik Общие вопросы Javascript 15 19.01.2013 23:19
Вопрос про change vitaly63 Общие вопросы Javascript 1 24.12.2012 10:50
Глупый вопрос про if then. Irish.Tippler Общие вопросы Javascript 9 26.07.2012 12:32
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
Вопрос про отправку данных методом Post QQQ AJAX и COMET 1 15.07.2009 23:27