理由がわからないまま切り替えていることに気づき、探すのが大変だと感じています。
4 に答える
' '
と" "
同じことです。これらは、文字列リテラルを定義するために使用されます。
引用符のないものは、識別子、キーワード、非文字列リテラル、プロパティ名、または数字(1つを見逃している可能性があります)である可能性があります。
例:
"hello world" literal (string)
'hello world' literal (string) with same contents
document identifier (object)
{ a: 1 } property name
if keyword (start conditional statement)
3.4 literal (number)
/abc/ literal (regex object)
一重引用符で囲まれた文字列リテラルは、エスケープされた二重引用符を必要としません。その逆も同様です。例:
'<a href="">click me</a>' HTML containing double quotes
"It's going to rain" String containing single quote
' '
文字列リテラルを引用するために" "
使用され、文字列を表しますが、引用符のないリテラルは変数(変数の名前、定数)であり、識別子として知られています。例
variable = 'Hello'; (Here `variable` is identifier and 'Hello' is string literal)
var = "Ho There"
' (single quote)
あなたは疑問に思うかもしれません、との違いは何ですか" (Double quote)
違いは、"
特殊文字が含まれている場合は文字列をエスケープする必要があることです。例:
"
Variable = "hi" there "; --->ここでは、次のように内部文字列をエスケープする必要があります
Variable = "hi \" there";
ただし、使用する場合'
は、エスケープする必要はありません(文字列に余分なものがない限り'
)。あなたは好きになることができます
var = 'Hello " World"';
"
および'
互換性があります(ただし、一緒に使用する必要があります)。
myObject["property"]
また、myObject.property
交換可能です。 $var foo = "property"; myObject[foo]
同様に(以下のコメントごとに)。
簡単なjsfiddleと、一重引用符と二重引用符の両方が制御コードなどをエスケープします。
後日、二重引用符が使用されていないHTMLでエラーが発生しました。JSONの仕様を見ると、文字列リテラルを引用するときに求められるのは二重引用符であることがわかります。ですから、歴史的な理由から、私が思うのは二重引用符です。
でも!サーバーサイドJSを書いている最近では、Cのルートに引き戻され、エスケープ文字と、事実上リテラル文字であり、エスケープ文字を含む可能性が低い一重引用文字列が必要な二重引用符が必要になる傾向があることを認めなければなりません(これは本質的に非生産的な振る舞い)。とにかく、私のJSのほとんどが今日のコーヒースクリプトであることに加えて、誰も優雅さのためにjavascriptを書いたことはありませんが、CSは別の魚のやかんです。