티스토리 뷰


※함수 내의 변수 범위 

function Constructor(value)
{
    let value1 = 10;

    this.value2 = value;

    value3 = 30;
}
 
번은 변수 선언 키워드를 사용해서 변수를 선언했기에
함수 형태로 호출되던, new를 이용해서 객체를 생성한 뒤 호출되던 상관없이 함수 내부의 지역변수이다.
 
②번은 변수 선언 키워드 없이 this를 사용한 경우로
함수 형태로 호출되면 window 객체에 존재하는 변수 value2를 찾으며,
new를 사용해서 생성한 객체를 이용해서 호출되면 new에 의해 생성된 객체 내의 value2의 값을 찾는다.
일반적으로 this는 최상위 객체인 window객체를 나타낸다.
 
③번은 변수 선언 없이 그냥 변수를 호출한 경우는
함수 형태로 호출되던, new를 이용해서 생성한 뒤 호출되던 window객체에 존재하는 변수 value3를 찾는다.


※변수 선언 키워드에 따른 변수 범위 
var  : 재정의를 할수 있으며, 변수의 범위는 함수 단위의 범위
let  : 재정의는 할수 없으며, 변수의 범위는 블럭 단위의 범위
const: 직접적인 변경은 할수 없으며, 범위는 블럭 단위의 범위

cs



※함수 scope(유효범위) 변수 범위 

function Constructor(value)
{
    let value1 = 10;

    this.value2 = value;

    value3 = 30;
}


①블록 유효범위는 없다.
for(var i=0; i<11; i++)
{
}
console.log(i) i의 값을 얻을수 있다.

②전역변수와 지역변수의 구별
var name = "global";
function func()
{
name = "local";
name2 = "local2";
var name3 = "local3";
}

함수외부에서 출력시
-.console.log(name) 은 func() 함수를 통해서 전역변수 name의 값이 변경되었음.

-.console.log(name2)은 func() 함수를 통해서 선언되었으나 변수 선언 키워드가 없어서
전역공간(window) 에 name2를 선언한 것과 같기 때문에 외부에서도 접근 가능

-.console.log(name3)는 지역변수를 외부에서 접근할려고 했기 때문에 에러 발생


③자바스크립트에는 블록 유효범위가 없다.
{
var cnt = 10;
}
console.log(cnt); 블록 외부에서 접근 가능

for(var cnt=0; cnt<11; cnt++)
{
}
console.log(cnt) 블록 외부에서 접근 가능

즉,
함수를 제외한 블록내에 선언한 변수는 전역변수의 취급을 받는다.
함수 내부에서는 데이터 선언 키워드를 사용하지 않고 변수명만 입력하면 전역변수로 취급한다.



'language > javascript' 카테고리의 다른 글

[node.js] 1.대략적인 이해  (0) 2020.03.24
상속의 형태  (0) 2018.12.01
객체를 생성하는 3가지 방법  (0) 2018.11.29
Math.random()을 이용한 난수 생성  (0) 2018.11.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함