質問: 文字列の、シングルクォーテーションとダブルクォーテーションの混合について どういう法則なのかわかりません。 tag+=""; 上記の、クォーテーションの割り振り方の法則をわかりやすく教えてください。 お願いします。 ``` ```
回答: まず、共通しているのは**文字列と認識させるための記号**ということです。 この記号には、ダブルクォート、シングルクォートの2種類、または、バックォートを加えた3種類があると考えます。 ルールとしては 1. 文字列の開始位置の記号と同じ記号で終了位置を示す 2. 記号と同じ記号が含まれる文字列ではエスケープする必要がある (\" など) ダブルクォートとシングルクォートの違いは、プログラミング言語によります。 例えば、Perlという言語では次のような違いがありました(たしかそう。曖昧でごめんなさい)。 1. ダブルクォートは変数展開できる。 2. シングルクォートは変数展開できない。 JavaScript では2つとも変数展開する機能は無く、違いも無いように感じますが、 質問コードのように、innerHTML用に与える文字列を生成する場合、属性部分にダブルクォートを含む文字列となるため、エスケープ箇所が増えてしまいます。 ですから、JavaScript では シングルクォートで統一するといいよね。って習慣もありました。 また、バッククォートも使えるようになった最近のjavascript では乱暴に言うと変数展開できます。 以上のことを踏まえて、次のようになります。 ``` tag+=""; // ダブルクォート tag+=''; // シングルクォート tag+=``; // バッククォート ``` だんだんと簡潔に書けるようになっています。 追記) 質問コードはHTML属性値の記述は**シングルクォートでも認識される**ためですね。 ``` tag+=''; // シングルクォート tag+=""; // 質問のコード ```