Символ новой строки как параметр функции в Javascript - PullRequest
3 голосов
/ 26 февраля 2012

С Test.html Я включаю test.js , который выполняет функцию d () . У этой функции есть параметр строка, которая может содержать символы «новой строки» (10 в ASCII), как показано в примере ниже. Однако при отладке этой функции переменные s и data включают все символы, кроме новой строки, т. Е. Содержат строку "HelloWorld" (длина 10) вместо "Hello [ charNewLine] World "(длина 11).

Есть ли способ передать строку с символами новой строки в качестве параметра функции в Javascript? Спасибо.

test.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=x-user-defined">
<title>JavaScript Scripting</title>
</head>
<body>
<script type="text/javascript" charset="x-user-defined" src="test.js">
</script>
</body>
</html>

test.js

function d(s) 
{
    var data = (s + "").split("");
    var dataLength = data.length;
    var t = [dataLength],n;

    for(n=0;n<dataLength;n++)
    t[n]=data[n].charCodeAt(0);
}
d("Hello\
World");

Ответы [ 2 ]

3 голосов
/ 26 февраля 2012
d("Hello\
World");

содержит «продолжение строки».

Спецификация языка говорит

Значение String ( SV )литерала описывается в терминах символьных значений ( CV ), вносимых различными частями строкового литерала.

...

SV из LineContinuation :: \ LineTerminatorSequence - это пустая последовательность символов.

, что означает, что она не вводит никаких символов в значение строкового литерала.

Чтобы вставить новую строку в строку,просто используйте \n как в

d("Hello\nWorld")
1 голос
/ 26 февраля 2012

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

d("Hello\n\
World");
...