{id:1,name:'test'}
는
{'id':1,'name':'test'}
나는 둘 다 여러 번 사용하고 지금은 혼란 스러워요 본 적이! 자바 스크립트에서
{id:1,name:'test'}
는
{'id':1,'name':'test'}
나는 둘 다 여러 번 사용하고 지금은 혼란 스러워요 본 적이! 자바 스크립트에서
, 두 가지 방법이 거의 해당하는, 당신은 모두를 사용할 수 있지만 인용되지 않은 키를 사용하여 예를 들어 당신이 예약 된 키워드의 이름을 가진 속성을 정의 할 수 버전 :
// valid
var obj = {
'for': 'test'
};
// SyntaxError
var obj = {
for: 'test'
};
JSON standard은 사양별로 quoted keys 만 사용할 수 있습니다.
편집 : 이제 확인해 보겠습니다.
Object initializer의 문법은 다음과 같은 방법으로 정의됩니다
ObjectLiteral : {} { PropertyNameAndValueList } PropertyNameAndValueList : PropertyName : AssignmentExpression PropertyNameAndValueList , PropertyName : AssignmentExpression
그리고 PROPERTYNAME 토큰이 될 수 있습니다
PropertyName : Identifier StringLiteral NumericLiteral
그것이 식별자 경우, 그것은 꽤 분명 사양에 따라 Reserved Word 일 수 없으므로 다음과 같이 표시됩니다.
,363,2107.5.1 Reserved Words Description Reserved words cannot be used as identifiers.
그리고, Identifier 문법의 첫 번째 정의는 다음과 같습니다
Identifier :: IdentifierName but not ReservedWord
그 이유는 무엇입니까? – user198729
+1 CMS, 훌륭한 답변입니다. @unknown 따옴표없이 예약어를 사용할 수 없습니다. 참조 용 목록은 다음과 같습니다. https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Reserved_Words –
하나는 사전에 키로 사용되는 문자열이고 다른 하나는 언어로 구문 분석되는 토큰입니다 그런 다음 사전에 문자열로 사용됩니다. –
나는 일반적으로 인용 키와 값 모두 안전 할 수 있습니다. 일부 키워드 및 기타 제약 조건은 따옴표가없는 경우 키에 오류를 유발할 수 있습니다.
첫 번째 방법은 완벽하지만 가끔 예약 된 키워드 인 속성을 선언 할 때 두 번째 방법을 사용해야합니다.
따옴표는 항상 문자열입니다. 그렇지 않으면 해석기가 이것을 문자/키워드 변수로 해석 할 수 있습니다.
문자열이나 식별자를 사용하여 개체의 속성을 지정할 수 있습니다. 다음과 같이 혼합 할 수도 있습니다.
var o = { 'id': 1, name: 'test'}
두 가지 방법 모두 동일한 결과를 제공합니다 (문자열을 사용할 때 키워드와 구분 기호를 사용할 수도 있습니다). 당신이 속성을 읽을 식별자 또는 문자열을 사용할 수있는 유사한 방법으로
: 속성이 문자열을 사용하여 만든 가alert(o.id);
alert(o['name']);
참고가 있다고 보여 식별자와 그 반대를 사용하여 읽을 수 있습니다 속성을 만들고 액세스하는 다양한 방법 만 사용하면 결과 속성은 해당 속성을 만드는 방법에 관계없이 동일합니다.
이와 같은 개체를 정의 할 때 식별자 또는 변수를 선언하는 것입니다. 식별자에는 여가 시간에 ECMAScript specification에서 체크 아웃 할 수있는 특정 규칙이 있지만 두 형식 모두 동일합니다. 그러나 예약 된 키워드 나 앞으로 예약 된 키워드를 사용하려고하면 브라우저가 다르게 작동합니다. 예를 들어 식별자로 사용할 수 없습니다.
break
do
instanceof
typeof
case
else
new
var
catch
finally
return
void
continue
for
switch
while
debugger
function
this
with
default
if
throwdelete
in
try
일부 브라우저는 오류로 표시되지만 일부는 그렇지 않을 수도 있습니다. 그리고 미래의 예약 된 키워드 목록이 너무있다 :
class
enum
extends
super
const
export
import
는 안전하고, 당신의 식별자를 인용하기 위해 더 말할 것마다 사양을 찾아 볼 필요하지 않으려면. 이 문제를 실제로 확인하려면 최소한 4.0.4 버전의 Safari에서이 키워드 중 하나를 식별자로 사용할 때 em을 확인하십시오. 예를 들어, 이러한 시도 :
var class = "my class";
단순한 선언이나 JSON 형식 개체 선언 내에서 작동하지 않습니다 :
var myObject = {
goodProperty: "this works",
class: "gimmeh the errarz codez!",
};
는 내가 처음 모드를 선호하지만 나를 그냥. –