まず、共通しているのは文字列と認識させるための記号ということです。
この記号には、ダブルクォート、シングルクォートの2種類、または、バックォートを加えた3種類があると考えます。
ルールとしては
- 文字列の開始位置の記号と同じ記号で終了位置を示す
- 記号と同じ記号が含まれる文字列ではエスケープする必要がある (" など)
ダブルクォートとシングルクォートの違いは、プログラミング言語によります。
例えば、Perlという言語では次のような違いがありました(たしかそう。曖昧でごめんなさい)。
- ダブルクォートは変数展開できる。
- シングルクォートは変数展開できない。
JavaScript では2つとも変数展開する機能は無く、違いも無いように感じますが、
質問コードのように、innerHTML用に与える文字列を生成する場合、属性部分にダブルクォートを含む文字列となるため、エスケープ箇所が増えてしまいます。
ですから、JavaScript では シングルクォートで統一するといいよね。って習慣もありました。
また、バッククォートも使えるようになった最近のjavascript では乱暴に言うと変数展開できます。
以上のことを踏まえて、次のようになります。
tag+="<img src=\"num" + i + ".gif\" />"; // ダブルクォート
tag+='<img src="num' + i + '.gif" />'; // シングルクォート
tag+=`<img src="num${i}.gif" />`; // バッククォート
だんだんと簡潔に書けるようになっています。
追記)
質問コードはHTML属性値の記述はシングルクォートでも認識されるためですね。
tag+='<img src="num' + i + '.gif" />'; // シングルクォート
tag+="<img src='num" + i + ".gif' />"; // 質問のコード
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/11/08 23:00