JavaScript 단점: Dot vs. Bracket - 모든 표기법이 동일하게 생성되는 것은 아닙니다.
당연히, 당신은 그들이 같은 방식으로 행동한다고 가정할 수 있지만, 그것은 사실이 아닙니다. 아래에서 몇 가지 차이점을 살펴보겠습니다.
점 표기법
점 표기법은 대괄호 표기법보다 더 자주 사용됩니다. 이유? 쓰는 글자수가 적습니다.
정말 간단합니다. 몇 개의 문자는 많지 않은 것처럼 보일 수 있지만 큰 코드베이스에서는 점 표기법을 사용하면 확실히 시간을 절약할 수 있습니다. 또한 읽기 쉬운 것으로 간주됩니다.
const car = {};
car.color = 'red';
car; // { color: red }
너무 놀랄 일은 없겠죠? 속성 이름을 만들 때 변수 이름 지정에 대해 동일한 규칙을 따릅니다. 식별자는 다음과 같아야 합니다.
*
$
또는
_
허용됩니다
const obj = {};
obj.1 = 'value'; // ❌ SyntaxError
obj.n@me = 'value'; // ❌ SyntaxError
obj."str" = 'value'; // ❌ SyntaxError
대괄호 표기
이것이 진정한 재미가 시작되는 곳이며 흥미로운 행동을 볼 수 있습니다. 위의 식별자에 대한 규칙을 기억하십니까? 글쎄, 그것들은 모두 잊어라. 다음을 사용하여 대괄호 표기법으로 속성을 만들 수 있습니다.
문자열
이것은 본질적으로 점 표기법을 통해 속성을 생성하는 것과 동일합니다. 속성은 점 표기법으로도 액세스할 수 있습니다.
const obj = {};
obj['propName'] = 'value';
obj['propName']; // 'value'
obj.propName; // 'value'
obj[propName]; // ❌ ReferenceError - No variable propName can be found
번호
네, 가능합니다. 숫자를 사용하여 속성을 만들 수 있습니다. 아래에서 숫자 1은 속성으로 문자열화됩니다. 점 표기법을 사용하여 속성에 액세스할 수 없습니다.
const obj = {};
obj[1] = 'value';
obj['1']; // 'value'
obj[1]; // 'value' - Property is already created, 1 is stringified
obj[2]; // undefined
obj.1; // ❌ SyntaxError
obj."1"; // ❌ SyntaxError
변수
이 예에서 변수 이름은 문자열입니다. 마찬가지로 변수가 숫자인 경우 문자열로 강제 변환됩니다. 변수를 사용할 때 따옴표를 사용하지 않으며 괄호 안의 값이 평가됩니다.
const obj = {};
const myPropertyName = 'propName';
obj[myPropertyName] = 'value';
obj.propName; // 'value'
obj['propName']; // 'value'
이상한 캐릭터
속성 이름에 유효하지 않은 문자를 사용하는 경우 따옴표로 묶어야 합니다. 다시, 우리는 문자열을 생성합니다.
const obj = {};
obj['@!£'] = 'value';
obj['@!£']; // 'value'
표현식
마지막으로 아마도 가장 흥미로울 것입니다. 실제로 표현식을 속성 이름으로 사용할 수 있습니다. JavaScript는 평가 대상으로 간주합니다. 즉, 계산을 수행하거나 함수를 호출할 수도 있습니다. 유용하죠? 😂
const obj = {};
obj[2 + 2] = 'value';
obj['4']; // 'value'
const myFunction = () => {
return 'propName';
}
obj[myFunction()] = 'value';
obj['propName']; // 'value'
점 표기법은 변수가 아닌 식별자에 액세스합니다.
점 표기법을 사용할 때 JavaScript는 유효한 식별자가 있는 속성에 액세스하려고 한다고 가정합니다. 즉, 동일한 이름의 변수와 속성이 있는 경우 선언된 속성이 사용됩니다. 모르는 경우 예기치 않은 결과가 발생할 수 있습니다.
const myProp = 'value';
const obj = {
value: 'my-value',
myProp: 'my-second-value'
};
obj[myProp]; // 'my-value'
obj.myProp; // 'my-second-value'
마지막 생각들
그래서, 당신은 무엇을 사용해야합니까? 대부분의 경우 점 표기법을 사용하는 것이 좋습니다. 그러나 변수나 이상한 문자를 사용해야 하는 경우 대괄호 표기법이 적합합니다. 사용 사례에 따라 다릅니다. 👍
내 트위터에서 더 많은 웹 사색을 읽을 수 있습니다.
Reference
이 문제에 관하여(JavaScript 단점: Dot vs. Bracket - 모든 표기법이 동일하게 생성되는 것은 아닙니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jameswilliams/javascript-quirks-dot-vs-bracket-not-all-notation-is-created-equally-1399텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)