3

私の同僚の1人は、JSオブジェクトのプロパティの文字列値を設定するときに円記号を使用しました。

shareButtonsHtml : '\
    <span class="share-fb">\
        <a href="#" class="fb-share"><span class="fb-share-icon"></span>Share</a>\
        <span class="fb-share-count"><i></i><u></u>0</span>\
    </span>\
    <div class="share-twitter"> \
        <iframe class="share-twitter-iframe" \
                allowtransparency="true" frameborder="0" scrolling="no" \
                src="https://platform.twitter.com/widgets/tweet_button.html" \
                style="width:130px; height:20px;"></iframe> \
    </div> \
    <div class="share-google"> \
        <div class="g-plusone" data-size="small" data-annotation="none"></div> \
    </div>',

この文字列で行う唯一のことは、ユーザーがソーシャル共有ボタンにマウスオーバーしたときに、ソーシャル共有ボタンコンテナにデータを入力することです。

self.html(obj.shareButtonsHtml);

バックスラッシュはJSのエスケープ文字です。私の同僚がここでそれらを使用した理由を誰かが説明できますか?確かに、彼はキャリッジリターンや改行を逃れる必要はありませんでしたか?それ以来、彼は別の会社に引っ越してきたので、私は彼に尋ねることができません!

4

3 に答える 3

5

彼は改行文字をエスケープしています。

複数行の文字列が必要な場合はこれが必要です。そうでない場合、JSは次の行を文字列の一部として認識しません。

それで、はい、彼は実際に「キャリッジリターンまたは改行を逃れる必要がありました」。それはまさに彼がそこでやっていることです。

文字列の連結を使用して文字列を複数の行に広げることができますが、それは文字列を使用するたびに余分な操作を意味します。パフォーマンスの違いはそれほど重要ではありません。ほとんどの場合、好みの問題です。

JSで複数行の刺し傷が通常機能しない理由は、インタープリター(ほとんどの場合*);がコード行の最後にaを追加しているためです(まだ存在しない場合)。これがオプションである理由;ですが、複数行の文字列も分割されます。

*例外はオブジェクト/配列リテラルであり、;'はそこに追加されません。例:

var obj = {
    a:1
}
于 2013-01-31T15:06:54.680 に答える
4

バックスラッシュは、ここで改行をエスケープするために使用されます。たとえば、コマンドラインでも使用できます。

David Walshは、複数行のjavascript文字列に関する優れた投稿を書いています:http: //davidwalsh.name/multiline-javascript-strings

あなたの同僚は実際には、文字列を連結するためにプラス(+)記号を使用する「遅くて醜い」方法よりも好ましい方法を使用しているようです。

ブログから:

各行の最後に円記号を追加すると、JavaScriptエンジンに、文字列が次の行に続くことを通知するため、セミコロンの自動挿入の煩わしさが回避されます。

于 2013-01-31T15:06:55.160 に答える
1

これにより、彼は複数行で文字列を定義できるようになります(\「改行」文字をエスケープします)。

于 2013-01-31T15:07:11.610 に答える