<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>
'매일코딩 > 자바스크립트 개념' 카테고리의 다른 글
[생활코딩 함수 ] 클로저 3 (0) | 2017.06.01 |
---|---|
[생활코딩 함수] 값으로서의 함수 2 (0) | 2017.05.31 |
[자바스크립트 기초]제이쿼리 4 (2) | 2017.03.05 |
[자바스크립트 기초]제이쿼리 3 (4) | 2017.03.04 |
[자바스크립트 기초]제이쿼리 2 (2) | 2017.03.03 |
댓글