Как разбить строку на более чем одну строку кода в JavaScript?

Есть ли в JavaScript символ, разбивающий строку кода, чтобы он читался как непрерывный, несмотря на то, что он находится на новой строке?

Что-то вроде....

1. оповещение ( "Пожалуйста, выберите файл   
2. \ удалить ");

8 ответов

Решение

В вашем примере вы можете разбить строку на две части:

alert ( "Please Select file"
 + " to delete");

Или, когда это строка, как в вашем случае, вы можете использовать обратную косую черту, как предложил @Gumbo:

alert ( "Please Select file\
 to delete");

Обратите внимание, что такой подход с обратной косой чертой не обязательно предпочтителен и, возможно, не поддерживается повсеместно (у меня были проблемы с поиском точных данных по этому вопросу). Этого нет в спецификации ECMA 5.1.

При работе с другим кодом (не в кавычках) разрывы строк игнорируются и совершенно приемлемы. Например:

if(SuperLongConditionWhyIsThisSoLong
  && SuperLongConditionOnAnotherLine
  && SuperLongConditionOnThirdLineSheesh)
{
    // launch_missiles();
}

Поставьте обратную косую черту в конце строки:

alert("Please Select file\
 to delete");

Изменить Я должен отметить, что это не является частью строк ECMAScript, так как символы конца строки не допускаются вообще:

Символ LineTerminator не может появляться в строковом литерале, даже если ему предшествует обратная косая черта \, Правильный способ заставить символ конца строки быть частью строкового значения строкового литерала - это использовать escape-последовательность, такую ​​как \n или же \u000A,

Поэтому лучше использовать конкатенацию строк.


Обновление 2015-01-05 Строковые литералы в ECMAScript5 допускают указанный синтаксис:

Символ конца строки не может появляться в строковом литерале, кроме как как часть LineContinuation для создания пустой последовательности символов. Правильный способ заставить символ конца строки быть частью значения String строкового литерала - использовать escape-последовательность, такую ​​как \n или же \u000A,

ECMAScript 6 представляет строки шаблона:

Шаблонные строки являются строковыми литералами, допускающими встроенные выражения. Вы можете использовать многострочные строки и функции интерполяции строк.

Например,

alert(`Please Select file   
to delete`);

предупредит

Please Select file   
to delete

Разбейте нить на две части

alert ("Please select file " +
       "to delete");

Интересно отметить. Пытался:

alert("Some \
    string \
    wrapped \
    across \
    mutliples lines.")

И это сработало. Однако, случайно, после финального обратного слэша был пробел (все остальные обратные слэши были в конце строки). И это вызвало ошибку в JavaScript! Удаление этого пробела исправило ошибку.

Это в ADT для Android с использованием Cordova.

Вы можете просто использовать

1:  alert("Please select file" +
2:        " to delete");

Это должно работать

Вы можете разбить длинную строковую константу на логические порции и назначить их в массив. Тогда сделай join с пустой строкой в ​​качестве разделителя.

var stringArray = [
  '1. This is first part....',
  '2. This is second part.....',
  '3. Finishing here.'
];

var bigLongString = stringArray.join('');
console.log(bigLongString);

Выход будет:

  1. Это первая часть....2. Это вторая часть.....3. Заканчиваю здесь.

Таким образом, наблюдается незначительное снижение производительности, но вы получаете улучшенную читаемость и удобство обслуживания.

Оператор обратной косой черты ненадежен. Попробуйте вставить эту функцию в консоль браузера:

function printString (){
  const s = "someLongLineOfText\
  ThatShouldNotBeBroken";
  console.log(s);
}

а затем запустите его. Из-за обычного (и правильного) отступа внутри функции будут включены два дополнительных пробела, что приведет к someLongLineOfText ThatShouldNotBeBroken.

В этом случае даже обратные кавычки не помогут. Всегда используйте оператор конкатенации "+", чтобы избежать проблем такого типа.

Хорошее решение для пользователей VSCode, если строка, разбивающаяся на несколько строк, вызывает проблему (я столкнулся с этим, когда мне нужно было протестировать длинный токен JWT, и каким-то образом использование шаблонных литералов не помогло.)

Я попробовал несколько из вышеперечисленных предложений, но получил предупреждение ILLEGAL символа в Инспекторе кода Chrome. Следующее сработало для меня (хотя проверено только в Chrome!)

alert('stuff on line 1\\nstuff on line 2);

выходит как...

stuff on line 1
stuff on line 2

ЗАМЕТЬТЕ двойную обратную косую черту!!... это кажется важным!

Нет необходимости какого-либо ручного взлома кода. Просто добавьте \n, где вы хотите сломать.

alert ("Please Select file \n to delete");

Это покажет предупреждение как

Please select file 
to delete.
Другие вопросы по тегам