Notice
Recent Posts
Recent Comments
Link
기린의 기록을 위한 공간
[JavaScript] 클로저 closure 본문
[클로저]
함수내에서 사용한 변수를 외부에서 사용할 수 있게 하는 기능
localScope -> grobal Scope
function funcA(title){
var name =title;
return function(){
console.log("안녕"+name+"공부 열심히 하자");
}
}
console.log(name);//위에 함수실행이 끝났기 때문에 name은 출력안됨
var closure = funcA("홍길동");
closure(); //클로저를 실행하면 접근이 가능하다
console.log(closure); //이렇게 하면 grobal scope가되서 출력가능
function test2(name, age){
var name = name;
var age = age;
//var를 선언안한 전역변수(grobal scope)
getName = function(){
return name;
}
getAge = function(){
return age;
}
setName = function(chName){
name = chName;
}
return function(){
return name+age;
}
}
test2("홍길동",20); //매개변수를 넣어서 한번 실행해야만 밑에서 변수들을 불러올 수 있음
console.log("set 전"+getName);
console.log(getName());
console.log(getAge());
console.log(getAge());
setName("거북이");
console.log("set 후"+getName);
</script>
[카운터 만들기]
전역번수를 이용한 카운터 / 클로저를 이용한 카운터 만들기
<button onclick="g_doCounter();">전역카운터</button>
<button onclick="doCounter(10);">closure카운터</button>
<div>
<span id="g"></span>
<span id="c"></span>
</div>
<script>
var cnt = 0;
var gCounter = document.getElementById("g");
var cCounter = document.getElementById("c");
//전역카운터
function g_doCounter(){
gCounter.innerHTML = "<h1>"+(++cnt)+"</h1>";
}
function changeVal(va){
cnt = va;
}
cnt = 10; //전역변수
//클로저 카운터
function c_counter(){
var count = 0;
return function(sum){
cCounter.innerHTML = "<h1>"+((++count)+sum)+"</h1>";
}
}
var doCounter = c_counter();
</script>
'Programming > JavaScript' 카테고리의 다른 글
[JavaScript] alert / confirm / prompt (0) | 2020.03.17 |
---|---|
[JavaScript] 정규표현식 (0) | 2020.02.17 |
[JavaScript]리턴 return (0) | 2020.02.17 |
[JavaScript] 함수 (0) | 2020.02.17 |
[JavaScript]배열 (0) | 2020.02.12 |
Comments