-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
프로퍼티
21.03.12 14:10 작성 조회수 76
1
그러면
let Sobj = new String('ABC');
console.log(Sobj[0]); -> A
console.log(Sobj.0) -> Uncaught SyntaxError: missing ) after argument list
처럼 문법 오류가 뜨는 이유를 좀 알 수 있을까요?
답변을 작성해보세요.
2
김영보
지식공유자2021.03.12
// 강좌 뒤에서 다루므로 간단하게 답합니다.
// 아래에서 obj["0"]과 obj[0] 형태 모두 100을 반환합니다. 이것은 0을 프로퍼티 이름(키)로 사용한 것으로 빝트인 Object는 이렇게 값을 구할 수 있습니다.
var obj = {0: 100};
console.log(obj["0"]);
console.log(obj[0]);
// obj.length 값으로 undefined가 출력됩니다.
console.log(obj.length);
//----------
// likeObj.length 값으로 3이 출력됩니다. 엔진이 {0: "A", 1: "B", 2: "C", length: 3} 형태로 저장합니다. 이 형태를 Array-like라고 합니다. Array-like의 시맨틱에서 느낄 수 있듯이 Array Like 형태입니다.
var likeObj = new String("ABC");
console.log(likeObj.length);
// A, B, C가 각각 출력됩니다.
for (var el of likeObj){
console.log(el);
};
// Array-like에서 0, 1, 2가 인덱스 개념이므로 배열 인덱스 형태로 값을 구할 수 있습니다console.log(likeObj[0]);
// 한편 Array-like의 0, 1, 2가 프로퍼티 이름이 아니라 인덱스 개념이므로
// likeObj.0 형태로 접근하면 에러가 납니다.
답변 1