36

改行を追加する必要はありません。読みやすいものを追加するだけです。

これより良いものはありますか?

str = "line 1" +
      "line 2" +
      "line 3";
4

9 に答える 9

22

NickFitzの答えとほぼ同じです:

var str = [""
    ,"line 1"
    ,"line 2"
    ,"line 3"
].join("");
// str will contain "line1line2line3"

違いは、コンマがどこにあるかに関係なく行を並べ替えることができるため、コードの保守性がわずかに向上することです。構文エラーはありません。

于 2010-03-11T13:19:28.107 に答える
16

私はこのバージョンが好きです(コードのフォーマットだけがあなたのものとは異なります):

var str = "line 1"
        + "line 2"
        + "line 3";
于 2009-10-19T15:20:25.347 に答える
13

あなたができる

str = "\
line 1\
line 2\
line 3";

コメントで述べたように、javascript パーサーはこの問題を処理します (すべての主要なブラウザーで動作します) が、正式には ECMA スクリプト構文の一部ではありません。そのため、圧縮プログラムやエラー チェッカーで動作する場合と動作しない場合があり、ブラウザーでの動作は保証されていません。

これは読みやすいかもしれませんが、それを行うための「最良の」方法ではありません。たぶん、ECMA スクリプトはいつか c# の @"" のようなものをサポートするでしょう。

于 2009-10-19T15:09:53.920 に答える
12

ご参考までに。あなたが提案する方法は正しい方法であり、他の回答よりも優れています。JsLintはバージョンのみを検証します。

于 2009-10-19T15:14:41.127 に答える
10
var str = [
    "line 1",
    "line 2",
    "line 3"
].join("");
// str will contain "line1line2line3"

実際に文字列に改行が必要な場合は、.join("")/.join("\n")に置き換えます

于 2009-10-19T17:12:11.533 に答える
6

一貫して。

どちらの方法を選択しても、アプリケーション全体でまったく同じ方法で実行してください。すでにコードが記述されているアプリケーションで作業している場合は、彼らが設定した規則を受け入れて、それに従ってください。

于 2009-10-19T15:19:56.420 に答える
2

はい!\ 文字を使用して、JavaScript に行末文字を無視させることができます。

str = 'line 1 \
line 2 \
line 3';

ただし、Elzo Valugi が指摘したように、これは JSLint を使用して検証されません。

于 2009-10-19T15:11:44.253 に答える
2

これは、 E4Xをサポートするブラウザーでのみ機能します。IEで使用できればと思います。

var str = <><![CDATA[

   Look, a multi-line
   string! < " // ' ? &

]]></>.toString();
于 2009-10-19T18:09:44.330 に答える
1

Chrome を使用する場合の開発中に役立つ可能性のあるものを次に示します。

function FSTR(f) {
    // remove up to comment start and trailing spaces and one newline
    s = f.toString().replace(/^.*\/\* *\r?\n/,"");
    // remove the trailing */} with preceeding spaces and newline
    s = s.replace(/\n *\*\/\s*\}\s*$/,"")
    return s;
}

s = FSTR(function(){/*
uniform vec2 resolution;
uniform float time;

void main(void)
{
    vec2 p = -1.0 + 2.0 * gl_FragCoord.xy / resolution.xy;
    vec2 cc = vec2( cos(.25*time), sin(.25*time*1.423) );
    ...
    float color = sqrt(sqrt(dmin))*0.7;
    gl_FragColor = vec4(color,color,color,1.0);
}
*/});

これはFirefox では機能しませんが、Chrome では機能します。

使用例は、webgl シェーダーの作成/テストです。開発中は、これを使用する方がはるかに優れており、後で、その構文をクロスブラウザー バージョンに変換する単純な正規表現を使用して、いつでもこれを実行できます。

于 2011-07-05T11:05:28.770 に答える