2011-08-28 5 views
1

가능한 중복 : B 아래
What is the difference between object keys with quotes and without quotes?자바 스크립트에서`{foo : "bar"} "와 {{"foo ":"bar "}`의 차이점은 무엇입니까?

차이가 무엇이며?

var a = {foo : "bar"}; 
var b = {"foo" : "bar"}; 
+0

참조 http://stackoverflow.com/questions/4348478/is-difference-between-object-keys-with-object-keys-with-quotes-and-without-quotes – Donovan

+0

스택 오버플로를 수행하려면 [http : /stackoverflow.com/questions/how-to-ask) 질문을하기 전에 Javascript 표준을 살펴 보았습니까? –

+0

이미 말했지만 다시 말합니다. 귀하의 발췌 문장에 JSON이 없습니다. –

답변

5

차이는 없습니다.

object literal의 키는 식별자 또는 문자열 리터럴 일 수 있습니다. 식별자에 사용할 수없는 문자열의 문자를 사용할 수 있지만 foo에는 그 중 하나도 포함되어 있지 않습니다.

+0

하지만 'foo'가 가변적 인 경우. 'var foo = "moo"; '는 변수의 값이되는 키가 아닐까요? –

+2

@Shadow - no. 변수를 객체 리터럴 구문의 키로 사용할 수 없습니다. – Quentin

+0

감사합니다. 키를 읽는 데 혼란스러워했습니다. http://jsfiddle.net/nstKg/ –

6

모두 유효한 자바 스크립트 객체 리터럴 및 속성이 foo라는 서로 다른 개체에 대한 평가와 (오히려 JS보다 JSON을 작성했다 경우 옆으로는, 그 키는 문자열이어야 할 것) a.foo == b.foo이 참입니다.

태그가 지정되었으므로 키는 문자열이어야합니다 (var a 선언 외). 첫 번째 문은 잘못된 JSON입니다.

+4

'var ='와';'가 있기 때문에 JSON도 유효하지 않습니다. – Quentin

1

동일합니다.

인용 구문을 사용하면 유효한 식별자 (예 : foo bar)가 아니거나 예약 된 키워드 (예 : for)를 설정할 수 있습니다.

JSON은 인용 구문을 허용합니다.

관련 문제