[javascript] 따옴표와 따옴표가없는 객체 키의 차이점은 무엇입니까?

차이점이 있습니까?

obj = {'foo': 'bar'} 

obj = {foo: 'bar'}

-따옴표를 사용하지 않으면 키에 사용할 수 없습니다 . 그러나 실제로 차이가 있습니까? 그렇다면 어느 것입니까?



답변

아니요, 따옴표는 차이가 없습니다 (명시한 바와 같이 유효한 JavaScript 식별자가 아닌 키를 사용하려는 경우 제외).

참고로 JSON 데이터 교환 형식 식별자 주위에 큰 따옴표 필요하며 작은 따옴표는 허용 하지 않습니다 .


답변

에서 인용 부호가 속성 이름 / 자바 스크립트 객체 키 , 내 쓰기까지 주제에 :

속성 이름이 숫자 리터럴이거나 유효한 식별자 이름 인 경우에만 따옴표를 생략 할 수 있습니다 .

[…]

모든 속성 이름에 대괄호 표기법을 안전하게 사용할 수 있습니다.

[…]

점 표기법은 속성 이름이 유효한 식별자 이름 인 경우 에만 사용할 수 있습니다 .

예약어는 ES5에서 따옴표없는 속성 이름으로 사용할 수 있습니다. 그러나 ES3와의 하위 호환성을 위해 어쨌든 인용하는 것이 좋습니다.

또한 주어진 속성 이름을 따옴표없이 사용하거나 점 표기법으로 사용할 수 있는지 알려주는 도구를 만들었습니다. mothereff.in/js-properties 에서 사용해보십시오 .

스크린 샷


답변

여기에는 차이가 없습니다. 스타일의 문제입니다. 이렇게하는 이유 중 하나는 예약 된 키워드이므로 ‘슈퍼’또는 ‘클래스’를 키로 사용할 수 있기 때문입니다.

어떤 사람들은 공백이있는 문자열을 전달하고 싶을 때 o [ ‘whitespace를 가질 수 있습니다’]를 부를 수 있습니다. 그러나 나는 그 나쁜 연습을 부를 것입니다.


답변

아니요, 자바 스크립트가 아닙니다. 그러나 키 주위에 따옴표가 없으면 일부 JSON 파서가 실패합니다.


답변

상황이 다른 경우도 있습니다. 예를 들어, jQuery를 사용 중이고 jQuery $ () 명령을 호출하여 요소를 작성할 때 전달할 매개 변수 목록을 작성하는 경우 인용 된 단어는 매개 변수로, 인용되지 않은 단어는 함수로 변환됩니다. 예를 들어, “size”는 객체의 크기 속성을 설정하고 size (따옴표 없음)는 객체에서 size () 함수를 호출합니다. 하단 근처의 jQuery ()를 참조하십시오 .

두 번째 인수는 편리하지만 유연성으로 인해 의도하지 않은 결과 (예 : $ ( ” <input>“, {size : “4”})가 발생하여 size 속성을 설정하는 대신 .size () 메서드를 호출 할 수 있음)가 발생할 수 있습니다 . 따라서 이전 코드 블록은 다음과 같이 작성 될 수 있습니다.


답변