2012-06-01 11 views
6

Zdałem sobie sprawę, że przełączam się między nimi bez zrozumienia, dlaczego tak się dzieje i trudno mi je znaleźć.co oznacza "" i "" oraz brak cudzysłowów w JavaScript?

+2

Czy możesz podać konkretny przykład? –

+4

Struny mogą używać '' "' lub '''', to nie ma znaczenia (wybierz tę, która sprawia, że ​​potrzebujesz mniej ucieczki ('" Mr. O'Neil "' lub '' ja powiedziałem "cześć" ' '). Numery nie muszą być cytowane, np.' 12'. –

Odpowiedz

16

' ' i " " to to samo; są używane do definiowania literałów łańcuchowych.

Rzeczy bez cudzysłowów mogą być identyfikatorem, słowem kluczowym, literałem innym niż ciąg znaków, nazwą właściwości lub numerem (mogą być pomijane).

Przykłady:

"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) 

napisowych, które są zamknięte w apostrofach nie potrzebują uciekły cudzysłowów i versa Visa, np

'<a href="">click me</a>' HTML containing double quotes 
"It's going to rain"   String containing single quote 
+3

Dwa ostatnie nie byłyby naprawdę uważane za identyfikatory, prawda? Wydaje mi się, że są dosłowne składni ich poszczególnych typów (liczba i wyrażenie regularne), podobnie jak pierwsze dwa ciągi znaków. –

+1

@amnotiam podasz prawidłowy punkt; Przeklasyfikowałem je jako literały :) dzięki! –

+1

Ach, jesteśmy. +1 Tylko inne rzeczy (które mogę wymyślić) w kategorii * rzeczy bez cytatów * byłyby operatorami i terminatorami oświadczeń ... i przypuszczam, że spacja, jeśli chcesz to policzyć. –

5

" i ' są wymienne (ale trzeba być używane razem).

myObject["property"] i myObject.property są również wymienne. $var foo = "property"; myObject[foo] również (za komentarzem poniżej).

+0

'myObject [właściwość]' dostaje właściwość myObject o wartości właściwości – pbfy0

6

' ' i " " wykorzystywane zacytować napis dosłowny i reprezentuje ciąg (s), natomiast dosłowny bez środki są zmienne (nazwa zmiennej, stałej) wie, jak identyfikator, przykład

variable = 'Hello'; (Here `variable` is identifier and 'Hello' is string literal) 


var = "Ho There" 

Możecie pytanie, jaka jest Różnica między ' (single quote) i " (Double quote)

Różnica jest, ciągi znaków w ciągu ", jeśli mają znak specjalny, a następnie muszą uciec. Przykład:

Zmienna = „hi” tam "; ---> tutaj trzeba uciec " wewnątrz łańcucha jak

Variable = "hi \" there"; 

Ale jeśli używasz, ' wtedy nie ma potrzeby ucieczki (chyba że jest to extra ' w ciągu). można hve jak

var = 'Hello " World"'; 
0

Szybka jsfiddle wokół i zarówno pojedyncze i podwójne cudzysłowy uciec kody sterujące itp

W ostatnich dniach pojawiły się błędy z HTML, w których nie użyto podwójnych cudzysłowów, a jeśli spojrzysz na specyfikację dla JSON, zauważysz, że jest to podwójny cudzysłów, o który prosi się przy cytowaniu literałów łańcuchowych. Tak więc, z przyczyn historycznych, jest to konwencja, którą myślę.

Jednak! W dzisiejszych czasach pisania po stronie serwera JS muszę przyznać, że jestem przywiązany do moich korzeni C i podwójnego cudzysłowu, w którym chciałbym uniknąć znaków i pojedynczych cudzysłowów, które są faktycznie literalnymi znakami i nigdy nie zawierają znaków zbiegów (mimo że jest to zasadniczo zachowanie nieproduktywne). Poza tym, mimo że większość moich JS jest obecnie w coffeescriptu, nikt nigdy nie napisał javascript dla elegancji, CS to jednak inny czajnik.