JavaScriptでマルチライン文字列を書く最もきれいな方法は何ですか? [複製

StackOverflow https://stackoverflow.com/questions/1589234

質問

この質問にはすでに答えがあります:

新しいラインを追加する必要はありません。ただ読みやすいものです。

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

str = "line 1" +
      "line 2" +
      "line 3";
役に立ちましたか?

解決

Nickfitzの答えとほぼ同じ:

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

違いは、カンマがどこにあるかに関係なく、線を再注文できるため、コードはわずかにメンテナンスしやすくなります。構文エラーはありません。

他のヒント

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

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

あなたがすることができます

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

コメントで述べたように、JavaScriptパーサーはこの罰金を処理します(すべての主要なブラウザーで機能します)が、ECMAスクリプト構文の一部ではありません。そのため、コンプレッサー、エラーチェッカーで動作する場合と機能しない場合があり、ブラウザで動作することは保証されていません。

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

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

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

文字列に実際にnewlinesが必要な場合は、交換してください .join("").join("\n")/

一貫して。

どちらの方法を選択しても、アプリケーション全体でまったく同じ方法で行います。既にコードを書いているアプリケーションに取り組んでいる場合は、設定し、それに合わせて慣習を受け入れてください。

はい!あなたはできる 文字を使用してJavaScriptに行の端の文字を無視してもらう.

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

ただし、As Elzo Valugiが指摘しました, 、これはjslintを使用して検証しません。

これはブラウザでのみ機能します E4x サポート - IEで使用できたらいいのにと思います

var str = <><![CDATA[

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

]]></>.toString();

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シェーダーの書き込み/テスト用です。開発中、これは作業するのがはるかに優れており、その後、その構文をクロスブラウザーバージョンに変換する単純なRegexpでいつでもこれを実行できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top