배열에서 식별자 : 인덱스

자동화된 인덱스 순환구조

 

오브젝트의 식별자 : 키

obj[속성명]

for in 문으로 객체를 갖는 속성을 순환할 수있다.

 

항상 선언이 먼저 인식되고(stack에 올라감) 연산절차가 진행된다. 

 

인터프리터 : 소스코드바로실행, 버추얼머신

컴파일러 : 소스코드번역해서 ->번역된결과물실행

모든객체에 속성을 마음대로 붙일 수있다.

 

앞에 아무것도 안붙이면 전역변수

var를 붙이면 지역변수가 되는데, 함수를 선언하고 그안에서 var로 선언해야 지역변수가 된다. 

console.log(a);

var a = 1;하면 

undefined가 나온다. 오류가 아니다.

선언이 되지않은걸 실행하면 오류가 날것같은데.. 오류가 아니고 undefined가 나온다.

  • 선언한것은 코드가실행 되기전에 미리 stack에 올라간다.
  • console.log(a)이후에 var a를 선언했어도 정의/선언된걸 먼저 찾기 때문이다. 이 후 연산이 진행된다.
  • var a는 실행문장이 아니다.

 

 

 

 

var x 가 스택에 올라간다. 

선언이 뒤에가있어도 

코드실행시 선언된것이 먼저 캐치되서 준비되고, 연산이 실행된다.

 

window.가 생략된것 

window객체의 변수 (this.처럼생략)

윈도우에 a를 추가한것으로 이해한것

  • <script>는 전역영역
  • window라는 전역객체가있다.
  • 변수선언하지않고 a = 1;라고 쓰게되면, (window.)a = 1; 전역객체에다가 a속성을 정의 한것이다.
  • alert도 window객체의 함수다. (window.)alert(a); 
  • 기본적으로 window객체를 기본적으로 활용하는 영역이기때문에 생략된다 

window. 이 생략된것

 

자바와 비슷하다.

this에 a가있어.

지역변수에 a가있나 봤더니 a가 없어.  - > this에 a가 있나 ? -> int a 있다 -> f1()에서 대입하고있는 3은 this의 a속성에 대입된다.

 

var를 붙이는것 : 지역변수선언

진짜지역을 갖고있는 블록이 존재하면 거기서 var를 붙이면 그 지역에서만 사용할 수 있는 변수가 만들어진다.

{ }를 안하면 선언헀던 안했던 전역변수가 된다.

 

오류가 안난다...지역화안되나요 ?

자바스크립트에서 지역화는 없다.

함수지역만 가능하다. es 5버전

함수내에서 var를 붙이면 의미가 달라진다 

오류가 나지않는다.

+ Recent posts