빈 문자열을 개체 식별자로 사용할 수 있습니까?
오브젝트를 만지작거리고 있는데, 다음과 같이 속성 이름으로 "("빈 문자열")을 사용할 수 있는 것 같습니다.
o = {
'': 'hello',
1: 'world',
'abc': ':-)',
};
console.log(o['']);
잘 되는 것 같습니다만, 궁금하네요.이게 정말 유효한 건가요?저는 ECMA의 사양을 살펴보고 항상 알고 있는 우리의 친구에게 구글의 다양한 질문들을 물어봤지만, 제 결론은 잘 모르겠다는 것입니다.
내 정보원
http://www.jibbering.com/faq/faq_notes/square_brackets.html
네, 엄밀히 말하면 완전히 유효하고 안전하게 사용할 수 있습니다.개체 키는 빈 문자열을 제외하지 않는 "문자열"이어야 합니다.
그것이 편리할지 아니면 심지어 유용한지는 또 다른 이야기다.
자세한 내용은 빈 속성 키를 사용해야 합니까?를 참조하십시오.
'빈 문자열'은 다음 중 하나이기 때문에falsy values
ecmascript에서는 다음 예를 고려합니다.
var foo = {
':-)': 'face',
'answer': 42,
'': 'empty'
};
Object.keys( foo ).forEach(function( key ) {
if( key ) {
console.log(key);
}
});
그 스니펫은 로그만 남습니다.:-)
그리고.answer
그럼 이게 함정 중 하나군요
괜찮은 것 같아요.(*)
고객님의 케이스에 적용):
PropertyAssignment :
(*) PropertyName : AssignmentExpression
get PropertyName ( ) { FunctionBody }
set PropertyName ( PropertySetParameterList ) { FunctionBody }
PropertyName :
IdentifierName
(*) StringLiteral
NumericLiteral
StringLiteral ::
" DoubleStringCharacters opt "
(*) ' SingleStringCharacters opt '
문자는 옵션이기 때문에 빈 문자열이 유효합니다.
주의해 주세요.IdentifierName
(즉, 없음)'
또는"
)에서는 빈 문자열을 사용할 수 없습니다.
IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
\ UnicodeEscapeSequence
그렇게,{'': 123}
유효한데 반해{: 123}
그렇지 않습니다.
언급URL : https://stackoverflow.com/questions/8757177/can-i-use-an-empty-string-as-an-object-identifier
'source' 카테고리의 다른 글
jqXHR.responseText가 JSON 개체 대신 문자열을 반환하는 이유는 무엇입니까? (0) | 2023.03.31 |
---|---|
내 웹 서버에서 발견된 악의적인 PHP 파일로, 이 문제가 다시 발생하지 않도록 치료 및 예방하는 데 도움이 필요합니다. (0) | 2023.03.31 |
태그 오류: 렌더에서 JSX 스타일 태그 오류 반응 (0) | 2023.03.31 |
숨겨진 입력을 각도로 모델에 바인딩 (0) | 2023.03.31 |
Angularjs UI 라우터.로그인 페이지로 리다이렉트하는 방법 (0) | 2023.03.31 |