본문 바로가기
매일코딩/자바스크립트 개념

[생활코딩 함수] 유효범위 1

by 인생여희 2017. 5. 30.
반응형

함수.zip


<HTML>

<HEAD>

<TITLE> hamsoo</TITLE>

</HEAD>

<script>

var scope = 'car';

function funcScope(){

alert(scope);

}


funcScope();


//함수 밖에서 변수를 선언하면 그 변수는 전역변수가 된다.

//전역변수는 어떤 함수 안에서도 그 변수에 접근 할 수 있다.

</script>

<BODY>


</BODY>

</HTML>

2


<HTML>

<HEAD>

<TITLE> hamsoo</TITLE>

</HEAD>

<script>

//전역변수

var scope = 'out-car';

//함수

function funcScope(){

//지역변수

var scope = 'inner-bike';

alert("inner"+scope);

}


//호출

funcScope();

alert("out"+scope);

//결과는 inner bike -> outout-car

//지역변수의 유효범위는 함수 안

//같은 이름의 전역변수와 지역변수가 동시에 선언되었다면 지역변수가 우선됨.

</script>

<BODY>


</BODY>

</HTML>



3

<HTML>

<HEAD>

<TITLE> hamsoo</TITLE>

</HEAD>

<script>

//전역변수

var scope = 'out-car';

//함수

function funcScope(){

//지역변수

scope = 'inner-bike';

alert("inner"+scope);

}


//호출

funcScope();

alert("out"+scope);

//결과는 inner bike -> out inner-bike

//var를 사용하지 않은 지역변수는 전역변수가 된다.

//전역변수는 사용하지 않는 것이 좋다. 

//변수를 선언할 때는 꼭 var를 붙이는 습관!

</script>

<BODY>


</BODY>

</HTML>



4.

<HTML>

<HEAD>

<TITLE> hamsoo</TITLE>

</HEAD>

<script>


//지역변수 사용

function a (){

    var i = 0;

}


for(var i = 0; i < 5; i++){

    a();

    document.write(i);

}


//같은 이름의 변수 i 지만 함수안에 지역변수로 선언되어서 for문에 영향을 안미친다.


</script>

<BODY>


</BODY>

</HTML>



5

<HTML>

<HEAD>

<TITLE> hamsoo</TITLE>

</HEAD>

<script>


//전역변수 사용 !

function a (){

     i = 0;

}


for(var i = 0; i < 5; i++){

    a();

    document.write(i);

}


//전역변수는 각기 다른 로직에서 사용하는 같은 이름의 변수값을 변경 시켜서 의도치 않은 

//문제를 발생시킨다.


</script>

<BODY>


</BODY>

</HTML>


6

<HTML>

<HEAD>

<TITLE> hamsoo</TITLE>

</HEAD>

<script>

//전역변수를 사용해야 할 경우에는 하나의 객체를 전역변수로 만들고 객체의 속성으로 변수를 관리하는 방법을 사용한다.


//객체 선언

MYAPP={}


// 객체 속성으로 객체를 만듬

MYAPP.calculator={

'left' : null,

'right':null

}



// 객체 속성 선언

MYAPP.coordinate={

'left' : null,

'right':null

}


//값 대입

MYAPP.calculator.left=10;


MYAPP.calculator.right=20;


// 더하기 함수

function sum(){

return MYAPP.calculator.left + MYAPP.calculator.right;

}


//호출 //결과값 30

document.write(sum());


//전역변수를 객체로 만들어 속성으로 객체를 통해 변수를 관리하면 변수 이름이 같아도 값이 변경될 여지가 없다.!

</script>

<BODY>


</BODY>

</HTML>




7.


<HTML>

<HEAD>

<TITLE> hamsoo</TITLE>

</HEAD>

<script>

//전역변수를 사용하고 싶지 않다면 아래와 같이 익명함수를 호출함으로서 이러한 목적을 달성할 수 있다.


(function(){

//객체 선언

MYAPP={}


// 객체 속성으로 객체를 만듬

MYAPP.calculator={

'left' : null,

'right':null

}



// 객체 속성 선언

MYAPP.coordinate={

'left' : null,

'right':null

}


//값 대입

MYAPP.calculator.left=10;


MYAPP.calculator.right=20;


// 더하기 함수

function sum(){

return MYAPP.calculator.left + MYAPP.calculator.right;

}


//호출 //결과값 30

document.write(sum());

}())


// 자바스크립트에서 로직을 모듈화 하는 일반적인 방법

</script>

<BODY>


</BODY>

</HTML>



8

<HTML>

<HEAD>

<TITLE> hamsoo</TITLE>

</HEAD>

<script>



for(var i=0; i <1;i++){


var name = 'wow';


}


alert(name);


//자바스크립트 변수는 함수에 대하 유효범위만을 제공한다. 

// for문 등에 선언된 변수를 for문 밖에서도 사용할 수 있다.

// but 다른 언어에서는 안됨


</script>

<BODY>


</BODY>

</HTML>



9.

<HTML>

<HEAD>

<TITLE> hamsoo</TITLE>

</HEAD>

<script>


//자바스크립트는 함수가 선언된 시점에서 유효범위를 가진다. 블록안에서 함수를 호출해도 그 블록의 지역변수를 가져오지 않는다

var i = 5;

 

function a(){

    var i = 10;

    b();

}

 

function b(){

    document.write(i);

}

 

a();


//정리


<!-- 자바스크립트 변수는 var 생성자의 유무에 따라 같은 이름의 변수라도 사용할 수 있는 범위가 달라진다 -->

<!-- 이것을 자바스크립트의 유효 범위가 다르다고 하는데 유효범위에 따른 변수의 종류에 대한 구분은 지역변수와 전역변수로 나눠진다 -->

<!-- 함수 밖에서 선언한 var로 변수는 전역변수가 되며, 함수블럭 내에서 var로 선언한 변수는 지역변수가 된다. -->

<!-- 지역변수는 같은이름의 지역변수가 존재해도 다른 객체로 취급되어 변수명의 재사용성이 훨씬 높아진다 -->

<!-- 지역젼수는 수명이 짧아 선언된 위상의 코드블럭이 종료되면 자동으로 사라진다 -->

<!-- 전역변수는 보안과 가독성을 높이기 위해 보통 사용하지 않는다 -->

<!-- 전역변수를 사용하고 싶을때 익명함수를 이용해 전역변수를 모아놓은 하나의 객체로 선언한다. 이것은 이전 강의의 모듈화에 이어지는 내용이다 -->

<!-- 자바스크립트는 함수가 선언된 시점에서 유효범위를 가진다. 블록안에서 함수를 호출해도 그 블록의 지역변수를 가져오지 않는다 -->

</script>

<BODY>


</BODY>

</HTML>





반응형

댓글