Что означает ", и, и отсутствие кавычек в Javascript?"

Я понял, что переключаюсь между ними, не понимая почему, и мне трудно это искать.


person expiredninja    schedule 01.06.2012    source источник
comment
Можете привести конкретный пример?   -  person Pekka    schedule 01.06.2012
comment
Строки могут использовать "" или '', это не имеет значения (выберите тот, который заставляет вас избегать меньше ("Mr. O'Neil" или 'I said "hi"'). Числа не нужно заключать в кавычки, например 12.   -  person Rocket Hazmat    schedule 01.06.2012


Ответы (4)


' ' и " " - это одно и то же; они используются для определения строковых литералов.

Вещи без кавычек могут быть идентификатором, ключевым словом, нестроковым литералом, именем свойства или числом (возможно, он пропустил).

Примеры:

"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
person Ja͢ck    schedule 01.06.2012
comment
Последние два на самом деле не будут считаться идентификаторами, не так ли? Мне кажется, это буквальный синтаксис отдельных типов (числа и регулярного выражения), как и в первых двух строковых примерах. - person ; 01.06.2012
comment
@amnotiam, вы говорите правильно; я переклассифицировал их как литералы :) спасибо! - person Ja͢ck; 01.06.2012
comment
А, вот и мы. +1 Только другие вещи (которые я могу придумать) в категории вещи без кавычек будут операторами и терминаторами операторов ... и я полагаю, что это пробел, если вы хотите это посчитать. - person ; 01.06.2012
comment
@amnotiam, хе-хе, совершенно верно, но я думаю, что это нужно сделать сейчас, если OP не хочет полного языкового разрыва ;-) - person Ja͢ck; 01.06.2012
comment
Да, вы уже рассмотрели то, о чем спрашивал OP, и многое другое. - person ; 01.06.2012

' ' и " " используются для заключения строкового литерала в кавычки и представляют строку (строки), тогда как литерал без кавычек - это переменные (имя переменной, константа), известные как идентификатор, пример

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"';
person Rahul    schedule 01.06.2012

" и ' взаимозаменяемы (но должны использоваться вместе).

myObject["property"] и myObject.property также взаимозаменяемы. $var foo = "property"; myObject[foo] (см. Комментарий ниже).

person djechlin    schedule 01.06.2012
comment
myObject[property] получает свойство myObject, названное со значением свойства - person pbfy0; 01.06.2012

Быстрый jsfiddle и управляющие коды одиночных и двойных кавычек и т. Д.

В последнее время у меня были ошибки из HTML, где не использовались двойные кавычки, и если вы посмотрите спецификацию для JSON вы заметите, что при цитировании строковых литералов запрашиваются двойные кавычки. Я думаю, что по историческим причинам принято использовать двойные кавычки.

Тем не мение! В эти дни написания JS на стороне сервера я должен признать, что меня склонны возвращать к своим корням C и двойным кавычкам, где мне нужны экранированные символы и строки одинарных кавычек, которые фактически являются буквальными символами и никогда не могут содержать экранированные символы (хотя это существенно непродуктивное поведение). Помимо того, что большая часть моего JS в настоящее время является coffeescript, никто никогда не писал javascript для элегантности, хотя CS - это другой котел с рыбой.

person user5321531    schedule 18.12.2012