javascript や PHP ではシングルクォーテーションを使うのはなぜ?
HTMLでよく用いられている引用符「ダブルクォーテーション」。<a href="http://~.html"~>こんな風につかいますよね。
一方、javascript や PHP では ' シングルクォーテーションが使われることが多いですよね。
どちらで書けばいいのか疑問に感じたことはありませんか?
HTMLなら<a href="http://yaruzou.net"> でも <a href=’http://yaruzou.net’>でも、きちんとリンクとして機能します。
javascriptも同じく、シングルクォーテーション ' でもダブルクォーテーション “ でも動きます。
ではなぜHTMLは “ ダブルクォーテーションを使い、javascript のようなスクリプトは ' を使うのかというと利便性の問題です。
たとえばjavascriptでURLを入れてある"site_url"という変数を使ってHTMLとして表示したい時に、HTMLは ダブルクォーテーションと決めておくと楽なんです。
var site_url='yaruzou.net'; document.getElementById('link').innerHTML ='<a href="'+site_url+'">'; <a href="http://yaruzou.net">//結果
文字列の赤太字の部分は文字列として ' でくくって、HTML内で使われる “ は文字列として使っています。
厳密に使い分けなければいけないこともある
javascriptでもphpでも、通常は構造が維持できていればシングルクォーテーション・ダブルクォーテーションどちらでも使えます。
しかしシングルとダブルを使い分けなければいけないケースもあります。
たとえば php なら '文字列だよ’ でも “文字列だよ" でも同じく文字列として扱われますが、特殊文字だけは挙動が異なります。
phpでの使い分け
phpでは改行記号 \r\n を echo '\r\n’; としても改行されません。ダブルクォーテーション echo “\r\n"; ならきちんと改行されます。
echo '\r\n'; //シングルクォーテーションは改行コードにならない echo "\r\n"; //ダブルクォーテーションなら改行される
なぜ違いが出るかというとシングルクォーテーション ' 内を文字列として扱うという PHP の仕様のためです。分割するときも同じで、explodeで’\r\n’ を使っても機能しません。
逆にダブルクォーテーションでくくった “\r\n" で \r\n を文字として表示させたければ、\\r\\nのようにエスケープ(特殊文字無効化)する必要があります。
その他のケース
その他、jQueryプラグインなどでも、シングルとダブルを区別することもあるので、確認したほうがいいケースもあります。
稀な例としては Shift + @ キーで表示される バッククォート ` が使われることもあります。
まとめ
まとめると
- HTMLではダブルクォーテーション・シングルクォーテーションどちらでもいい
- javascript や php では基本的にどちらでも使えるが、扱いが異なることがある
ということです。
ダブルとシングルの使い方は人によっても違ったりするので、最初のうちは迷いますよね。
ディスカッション
コメント一覧
まだ、コメントがありません