본문 바로가기
javascript

length 값 반환 논리

by rami_ 2021. 9. 23.

var value = "ABC";

for (var k = 0; k < value.length; k++){

 log(value[k]);

}; //대괄호 안은 인덱스로 사용됨.

변수 "ABC"선언.

0이 처음 할당되고 0 < 3  true. log(value[0]); 0번째 인덱스의 값은 A. 

for문에 k++로 돌아가 1이 할당되고 다시 1<3 true. log(value[1]); 1번째 인덱스의 값은 B

 

그런데 value변수에는 "ABC" 밖에 없는데 length프로퍼티를 활용해 값을 구할 수 있는지?

var value = "ABC";

Local의 value에 "ABC"값이 설정됨. length가 없지만 3이 출력됨

var obj = new String("ABC"); //새로운 인스턴스 만듦.

그다음에 obj를 펼치면 length : 3 이 나옴. obj.length 하면 3이 출력될 것임.

obj나 value나 레벨이 같다는 이야기. value가 인스턴스가 된것임.

value.length를 만나면 value가 어떤 타입인지 알아봄(string인지 number인지..). 여기서는 string타입인데 내부에서 new String("ABC") (인스턴스)를 만들어버림. obj가 value에 해당함.

Primitvie값에 "ABC"를 할당하고 그걸보고 length값을 계산함.

이때 만들어진 인스턴스를 통해 length값을 출력해냄.

length프로퍼티는 자바스크립트 엔진이 만들기는 하지만 외부에서 개발자코드로 호출해내면 출력.

[[PrimitiveValue]]도 엔진이 만듬. 대괄호 두개가 쳐져있는데 이건 외부에서 사용되는 것이 아닌 내부에서만 사용되는것.

primitve값을 구하려면 함수를 사용해야함. length는 value.length형태로 작성할 수 있음.

 

내부에서 0(프로퍼티 이름) :(프로퍼티) "A"(값) 프로퍼티이름을 인덱스로 사용.

value[k]에서 우리는 k를 인덱스로 봤지만 자바스크립트는 프로퍼티 이름으로 봄.

'javascript' 카테고리의 다른 글

인덱스로 문자열 처리  (0) 2021.09.27
함수호출구조(?)  (0) 2021.09.23
length 값 반환 논리  (0) 2021.09.16
String length  (0) 2021.09.16
String 오브젝트  (0) 2021.09.14