一重引用符と二重引用符( 'vs ")


250

HTMLを手動で作成するときは、常に単一引用符を使用しました。私は常に二重引用符を使用する多くのレンダリングされたHTMLを扱います。これにより、HTMLが手動で作成されたものか、生成されたものかを判断できます。これは良い考えですか?

2つの違いは何ですか?どちらも機能し、すべての最新のブラウザでサポートされていますが、状況によって実際にどちらが優れているかという違いはありますか?



5
手書きか生成されたHTMLを判別する手段として単一引用符と二重引用符のどちらを使用するかについての質問に答えるには、おそらくそれは良い考えではありません。一貫性のないコード(ある場所ではシングルを使用し、他の場所ではダブルを使用する)はおそらく手書きですが、多くの人(私を含む)はどこでもダブルクォートを使用していますが、コードはコンピューターで生成されたものではありません。 )
Doktor J

@Aitoの答えは確かに正しいので受け入れるべきです...個人的には、単一のキーワード/タグ、URL、参照などの短い属性には単一引用符を使用しています。実際に人間が読むことを意図していないもの。長いテキスト、またはスペースや一重引用符/アポストロフィを含む可能性のあるものすべてについては、コンテンツとして二重引用符を使用します。それはあなたのスタイル(またはあなたが使うスタイルガイド)の問題です
cedbeu

1
10の主要なウェブサイトをチェックアウトし、それらの大多数が使用しているものを確認します(stackoverflow、youtube / google、wikipediaなど)。これまでのところ、単一引用符を使用する主要なWebサイトを見つけるのに苦労しています。
Timo Huovinen、2015年

回答:


391

W3組織は言った

デフォルトでは、SGMLでは、すべての属性値を二重引用符(ASCII 10進数34)または単一引用符(ASCII 10進数39)で区切る必要があります。値が二重引用符で区切られている場合は、属性値内に単一引用符を含めることができ、その逆も可能です。著者は、数字引用を使用して二重引用符(")および単一引用符(')を表すこともできます。二重引用符の場合、作成者は文字エンティティ参照を使用することもできます"

だから...違いはないようです。あなたのスタイルだけに依存します。


38
( 'または "のいずれかで)一貫していると、圧縮(gzip、deflate)ページを提供する場合に、圧縮率が高くなる可能性があります
cherouvim

2
@Aito、それはSGML用です。HTMLの場合、すべての属性値を区切る必要があるわけではありません
Pacerier 2013年

4
シングルではなくダブルをお勧めします-仕事ができるのになぜ2を使うのか。
Ujjwal Singh 2014

7
@JohnHunt:1823バイトのjsファイル(ランダムアプリケーションからのランダムバックボーンモデル)に対して簡単なテストを行いました。すべての引用符が同じ('または")の場合のgzip出力は809バイトでした。それらを混合すると、出力が最大829バイトにプッシュされます。これはあなたには関係ないかもしれませんが、それが誰にも関係がないという意味ではありません。
cherouvim

3
「ああ、それは非常に低い可能性があり、おそらく無関係である」から100の「おそらく無関係な」ものまで言われると、千針の死が起こります。妥当な努力の範囲内で、保存できるすべてのものはIMOを保存する価値があります。
契約によると私は正しいと

67

ほとんどの人がそうであるように、私"はトップティアと'セカンドティアとして使用します。例えば

<a href="#" onclick="alert('Clicked!');">Click Me!</a>

その例では、両方を使用する必要があり、避けられません。


38
私もそうしますが、html内のjavascriptをインライン化しないようにすることで回避できます。
cherouvim

4
カスタムdata-*属性を使用する場合など、単一引用符が必要になる可能性があるインラインJavaScript以外の状況もあります。アプリケーションとdata-*属性の使用方法によっては、'内でを使用する必要がある場合があります"。時には我々はGoogle Analyticsのイベントトラッキングのためにそれらを使用する:<a href="..." data-track="Homepage Banner|Clicked|Dick's Sporting Goods">click me</a>
ジェイク・ウィルソン

3
検討してくださいvar x = "<a href='" + url + "'>click me</a>";
NibblyPig

4
次のように簡単に回避できます:<a onclick="alert(\"Clicked!\")">。ただし、これは読みにくくなります。
fabspro 2012

2
ただし、それがSGMLとHTML5で正式にサポートされているかどうかは、完全にはわかりません。
fabspro

26

Web開発者のための引用規約

短い答え

HTMLでは、単一引用符( ')と二重引用符( ")の使用は互換性があり、違いはありません。

ただし、一貫性が推奨されるため、構文規則を選択して定期的に使用する必要があります。

長い答え

Web開発は多くの場合、多くのプログラミング言語で構成されています。HTML、JS、CSS、PHP、ASP、RoR、Pythonなど。このため、プログラミング言語ごとに多くの構文規則があります。多くの場合、「適切」とは見なされない場合でも、1つの言語からの習慣が他の言語に追随します。つまり、コメント規則です。引用規約も私にとってこのカテゴリーに分類されます。

しかし、私はHTMLをPHPと密接に組み合わせて使用​​する傾向があります。PHPでは、一重引用符と二重引用符の間に大きな違いがあります。二重引用符付きのPHPでは、「文字列のテキスト内に直接変数を挿入できます」。(scriptingok.com)また、単一引用符を使用すると、「テキストはそのまま表示されます」。(scriptingok.com)

PHPは二重引用符で囲まれた文字列の処理に時間がかかります。PHPパーサーは事前に文字列全体を読み取って内部の変数を検出し、それを連結する必要があるため、単一引用符付きの文字列よりも処理に時間がかかります。(scriptingok.com)

 

サーバーでは一重引用符の方が簡単です。PHPは文字列全体を事前に読み取る必要がないため、サーバーはより高速で快適に動作します。(scriptingok.com)

その他の考慮事項

  1. 文字列内の二重引用符の頻度。文字列内で一重引用符( ')を使用する必要があるよりも、文字列内で二重引用符( ")を使用する必要があることがわかりました。必要な文字エスケープの数を減らすには、一重引用符区切り文字を使用します。
  2. 単一引用符を付ける方が簡単です。これはかなり自明ですが、明確にするために、SHIFTキーを何度も押す必要があるのはなぜですか。

私の大会

PHPをこのように理解することで、サーバーの最適化のために、デフォルトで文字列を単一引用符で表すという規則を(自分自身と会社全体で)設定しました。属性内でJavaScriptなどの引用符が必要な場合、文字列内で二重引用符が使用されます。次に例を示します。

<button onClick='func("param");'>Press Me</button>

もちろん、PHPを使用していて、パーサーに文字列内のPHP変数を処理させたい場合は、意図的に二重引用符を使用する必要があります。 $a='Awesome'; $b = "Not $a";

出典

PHPの単一引用符と二重引用符。(nd)。2014年11月26日、http://www.scriptingok.com/tutorial/Single-quotes-vs-double-quotes-in-PHPから取得


3
:あなたはこの質問に答えたの前にPHPで二重引用符の性能差対の単一引用符はゼロ年であることが知られた nikic.github.io/2012/01/09/...
コナーMancone

1
文字列内では、単一引用符よりも二重引用符の方が多いですか?面白い。文字列で二重引用符を最後に使用したのを思い出せません。
Zonker.in.Geneva

常に。フルスタック開発者としての過去10年間、私は文字列内で二重引用符を単一引用符よりも10倍頻繁に使用する必要があることに気付きました。JavaScriptの最も一般的な例は、属性セレクターは二重引用符でのみ機能するため、完全にdocument.querySelector("[name^='myname']")は機能しますがまったく機能しませんdocument.querySelector('[name^="myname"]')
ダスティンポワサン

@DustinPoissant WHAAAT ?? どのブラウザで?
Mr Lister

14

それがすべて同じ場合は、Shiftキーを押す必要がないため、単一引用符を使用する方が良いでしょう。キーストロークの減少== RSIの可能性が低くなります。


2
まあ、少なくとも銀河の共通のレイアウトでは。(hush-hush)
n611x007

1
RSIのリスクとキーストロークの数はコーディング標準とどのように関係していますか?
Dib 2014

非常に多くの意見があるため、一重引用符と二重引用符の間に違いはありませんが、キーストロークの数がTWOの要素によって異なることを明確にする意見は1つだけです。そして、多くの引用が必要です。私たちの脳の二重引用符のパターン認識のために発火するためにより多くのニューロンが必要になるかもしれないという提案を付け加えてもいいですか?
ローランド

これはフランスのキーボードには当てはまりません。
Tokeeen.com 2017年

11

HTMLでは、"またはを使用するかどうかは重要ではありません'が、ドキュメント全体で一貫して使用する必要があります。

私自身の使用法では、attributes / htmlを使用することを好みます"が、すべてのJavaScriptが'代わりに使用します。

これにより、私にとっては、読みやすく、確認しやすくなります。あなたの使用が私のものよりあなたにとって意味がある場合、変更の必要はありません。しかし、私には、コードが乱雑に感じられるでしょう。それは個人的なことです。


一貫して使用する必要があるのはなぜですか?読みやすさのためだけ?
timetofly 2013年

そうすれば間違いを避けやすくなるからです。
デビッドはモニカを

2
属性を使用することもよくありますが、解析を可能にするために「使用」を使用し"たい場合は、PHPコードでコードを作成しています。このエコー内のhtml属性は、を使用するとより読みやすくなります。確かに一貫性はありませんが、すべてのバックスラッシュがないと、はるかに簡単です。echo"'
timetofly 2013年

3
あなたのために働くものは何でも結構です。一貫性があるとは、「常にXを実行する」という意味ではなく、単に「状況Xでこのように実行する」という意味です。一貫性はコンテキストに対応している場合があります。そして、そのように最もよく使われます。
デビッドはモニカを

9

実際、最善の方法は、Googleが推奨する方法です。二重引用符:https : //google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Quotation_Marks#HTML_Quotation_Marks

Googleからのhttps://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Validity#HTML_Validity Quoted Adviceを参照してください適切なHTMLの使用。」


stackoverflowを含め、これまでに遭遇したWebサイトの大多数は二重引用符を使用しています。Web全体での一貫性が良いと思うので、正解は「二重引用符」でもあります。
Timo Huovinen、2015年

2
しかし、なぜ!?なぜ"オーバー'!?
サン

2
@San Consistency、ほとんど。アメリカ英語の標準に従って、二重引用符は引用符用であり、単一引用符はサブ引用符用です。
Nielsvh 2017

6

私が知っているLOTS人々のは同意しないだろうが、これは私が何をすべきかと私は本当に、このようなAのコーディングスタイルを楽しむ:それは絶対に必要でない限り、私は実際にはHTML内の任意の引用符を使用しません。

例:

<form method=post action=#>
<fieldset>
<legend>Register here: </legend>
  <label for=account>Account: </label>
  <input id=account type=text name=account required><br>
  <label for=password>Password: </label>
  <input id=password type=password name=password required><br>
...

二重引用符は、属性値などにスペースがある場合にのみ使用されます。

<form class="val1 val2 val3" method=post action=#>
  ...
</form>

1
理由はありますか?それとも「本当にそのようなコーディングスタイルを楽しんでいる」のですか?
Bugs Bunny

4
引用符がないと、HTMLはかなりきれいに見えます(ファイルサイズは少し小さくなります)。それだけが理由です。さらに、すべての属性に引用符を付ける必要があるという点が本当にわかりません。なぜ面倒を省くために省略できないのですか?w3.orgでも引用符で囲まれていない属性値を受け入れます(w3.org/TR/html-markup/syntax.html#syntax-attr-unquoted)。シンプルは複雑よりも優れています。引用符があるのはある種の宗教でしょうか?
Randy Tang

5
いいえ、私が認識している宗教はありません。私はかなり長い間HTMLを使用してきましたが、あなたのスタイルが以前に使用されたのを見たことはありません...だから私は尋ねました。
Bugs Bunny

1
また、HTML縮小版は不要な引用も取り除きます。
ニムロッド2017年

2
属性値を引用符で囲むことの問題は、引用符で囲む必要のある文字のリストが規格によって異なることです。たとえば、HTML4は文字、数字、ダッシュ、ドットで構成される値のみが引用符で囲まれなくなる可能性があると述べましたが、HTML5はスペースと "'` <=>以外はすべて行くと言っているので、特に古いブラウザでは注意が必要です!
Mr Lister

5

HTMLの二重引用符の使用

すなわち

<div class="colorFont"></div>

JavaScriptの単一引用符の使用

すなわち

$('#container').addClass('colorFont');
$('<div class="colorFont2></div>');

2

Bootstrapを使用すると、二重引用符を使用することが問題でしたが、単一引用符を使用すると問題が発生しました。class = 'row-fluid'は、最後のスパンが右端の横にうまく座っているのではなく、他のスパンを下回る問題を引き起こしましたが、class = "row-fluid"は機能しました。


1

asp.netを記述している場合、Evalステートメントで二重引用符を使用し、値を区切るために単一引用符を使用する必要があります。これは主に、C#インラインコードが文字ではなくevalコンテナーで文字列を使用していることを認識するためです。個人的にはどちらか一方のみを標準として使用し、それらを混在させないでください。


1

次の場合に、「の代わりに」を使用します。

<input value="user"/> //Standard html
<input value="user's choice"/> //Need to use single quote
<input onclick="alert('hi')"/> //When giving string as parameter for javascript function

次の場合に、「の代わりに」を使用します。

<input value='"User"'/> //Need to use double quote
var html = "<input name='username'/>" //When assigning html content to a javascript variable

3
「htmlコンテンツにjs変数を割り当てる」というケースでは、通常は反対のことを行いvar html = '<input name="username" />';ます。残りのhtmlとの一貫性を保ちます:)
Erenor Paz

1

htmlに違いはありませんが、別のプログラミング言語で動的にhtmlを生成している場合は、ある方法が他の方法よりも簡単な場合があります。

たとえばJavaでは、二重引用符は文字列の開始と終了を示すために使用されるため、文字列内に二重引用符を含める場合は、円記号でエスケープする必要があります。

String s = "<a href=\"link\">a Link</a>"

一重引用符にはこのような問題はないため、一重引用符を使用すると、Javaでコードが読みやすくなります。

String s = "<a href='link'>a Link</a>"

特に、多くの属性を持つhtml要素を記述する必要がある場合(通常、jhtmlなどのライブラリーを使用してJavaでhtmlを記述しますが、必ずしもそうすることが実用的ではないことに注意してください)


サーブレットで2つのインターンシップを行いました。私は自分のコードを分析していて、二重引用符、一重引用符、および文字列連結の現実を実現し始めました。私が研究に使用したウェブサイトは、htmlの二重引用符とJavaの単一引用符を使用していました。気づかなかった。私はついにそれを手に入れられてうれしい...
マイケル

0

私はここでは初心者ですが、最初の引用符内で二重引用符を使用する場合にのみ、単一引用符を使用します。はっきりしない場合は、例を示します。

<p align="center" title='One quote mark at the beginning so now I can
"cite".'> ... </p>

私が助けてくれたら幸いです。


-5

PHPでは、二重引用符を使用すると、変数名が評価されるため、パフォーマンスがわずかに低下します。そのため、実際には、コードを記述するときに常に単一引用符を使用します。

echo "This will print you the value of $this_variable!";
echo 'This will literally say $this_variable with no evaluation.';

したがって、代わりにこれを書くことができます。

echo 'This will show ' . $this_variable . '!';

私はJavascriptも同様に機能すると信じていますので、あなたにとって重要なのは、パフォーマンスの非常に小さな改善です。


さらに、HTML仕様2.0に至るまで、すべてのタグがここにリストされています。

W3 HTML DTDリファレンス

(二重引用符を使用します。)頻繁に使用する傾向がある場合でも、一貫性は重要です。


13
JavaScriptは文字列内の変数名を評価しません。間で'と"JavaScriptで違いはありません。
ジョンメラー

-9

文字列には二重引用符が使用され(「this is a string」)、文字には単一引用符が使用されます(つまり、「a」、「b」、または「c」)。プログラミング言語とコンテキストによっては、文字に二重引用符を使用しても、文字列に単一引用符を使用しないで済む場合があります。

HTMLはどちらを使用してもかまいません。ただし、PHPスクリプト内でHTMLを記述している場合は、二重引用符でエスケープする必要があるため(つまり、「whatever \」)、自分自身とPHPを混同しないようにする必要があります。


私はかなり多くのプログラミング言語を知っていますが、これが真実であるものの1つです。
mikl 14

1
C#およびJavaでの@miklの一般的な慣習は、文字列を二重引用符で囲み、文字を単一引用符で囲みます。しかし、それはこの回答の検証を提供しません。これが別の質問への答えでない限り。
Evorlor、2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.