1)
function 이라는 선언자(?)가 삭제됐을 때,
function 에서 선언(?)한 object 는 살아남았을까..라는 의문에서 시작해봤습니다.
...
2)
<div id=output120321_1 >결과출력장소</div>
<script>
function functionSample120321_1() {
var b;
function a() {
return [1, 2];
}
b = a();
delete a;
document.getElementById('output120321_1').innerHTML=b;
}
functionSample120321_1();
</script>
...
3)
...
4)
object (정확히는 Array 개체..?)는 살아남았네요.
함수를 삭제한다고, 함수 내에서 정의한 object 까지 날리지는 않는가봅니다.
5)
선언..이라고 적긴 했지만,
[] 를 적은 시점에서 선언이 아닌 생성이었겠네요.
(.. 이후 내용 '12.06.02 15:51 추가본..)
... 그런데.. 하다보니,
6)
object 가 아닌, function 내의 변수는 어떨까..라는 의문이 들더라구요.
...
7)
<div id='output120321_2' >결과출력장소</div>
<script>
function functionSample120321_2() {
var a;
function b(e) {
var d=e;
return function() {
return d;
}
}
a = b(3);
delete b;
document.getElementById('output120321_2').innerHTML=a();
}
functionSample120321_2();
</script>
...
8)
...
9)
호오.. 살아있습니다.
함수가 삭제된다고, 변수 선언자까지 삭제되는 것은 아니군요..
.. 아니,
함수선언이 삭제된다고
선언한 함수까지 삭제되는 것이 아니라는 표현이 맞을 것 같습니다.
함수가 함수로써의 기능을 가지고 있고,
delete 선언의 경우에는 변수명 지정을 날리는 역할로 보이네요.
예전에 test 했던 delete-가-실제-메모리에-적용되는-타이밍-IE 의 경우에는,
안쪽에 있던 항목들을 삭제하는 기능을 했지만,
function 만 삭제하는 경우에는
function 을 선언하면서 사용한 공간까지는 비우지 못하는 것 같네요.
..라고 적었는데요,
(.. 이후 내용 '12.09.14 14:50 추가본..)
한참 나중(?)에 와서 이 내용을 읽다가 오류를 발견(?)하고,
한번 더 테스트 해봅니다.
*참고* http://buildnewgames.com/garbage-collector-friendly-code/
10)
<div id='output120321_3' >결과출력장소</div>
<script>
function functionSample120321_3() {
var a, b={};
b.c=function (e) {
var d=e;
return function() {
return d;
}
};
a = b.c(3);
delete b.c;
document.getElementById('output120321_3').innerHTML=a()+' '+b.c;
}
functionSample120321_3();
</script>
...
11)
...
12)
기존 7)번 내용에서
b 가 사라지지않는 버그(?)를 발견(?)하고 급하게 다시 고쳤습니다.
물론, 위의 실험에서 확인하려던 변수값이
사라지지는 않습니다.
.. 뭐랄까요.. 실행했을 때 이미
해당 함수가 할 도리(?)를 다 했다고 봐야하니까요.
function 으로 선언한 내용들은
실행했을 때 의미가 있는 것이지,
function 실행 이전과 이후는
실행했을 때와는 관계가 없는 거라서요..
...
easyBow killofki@.
function 이라는 선언자(?)가 삭제됐을 때,
function 에서 선언(?)한 object 는 살아남았을까..라는 의문에서 시작해봤습니다.
...
2)
<div id=output120321_1 >결과출력장소</div>
<script>
function functionSample120321_1() {
var b;
function a() {
return [1, 2];
}
b = a();
delete a;
document.getElementById('output120321_1').innerHTML=b;
}
functionSample120321_1();
</script>
...
3)
결과출력장소
...
4)
object (정확히는 Array 개체..?)는 살아남았네요.
함수를 삭제한다고, 함수 내에서 정의한 object 까지 날리지는 않는가봅니다.
5)
선언..이라고 적긴 했지만,
[] 를 적은 시점에서 선언이 아닌 생성이었겠네요.
(.. 이후 내용 '12.06.02 15:51 추가본..)
... 그런데.. 하다보니,
6)
object 가 아닌, function 내의 변수는 어떨까..라는 의문이 들더라구요.
...
7)
<div id='output120321_2' >결과출력장소</div>
<script>
function functionSample120321_2() {
var a;
function b(e) {
var d=e;
return function() {
return d;
}
}
a = b(3);
delete b;
document.getElementById('output120321_2').innerHTML=a();
}
functionSample120321_2();
</script>
...
8)
결과출력장소
...
9)
호오.. 살아있습니다.
함수가 삭제된다고, 변수 선언자까지 삭제되는 것은 아니군요..
.. 아니,
함수선언이 삭제된다고
선언한 함수까지 삭제되는 것이 아니라는 표현이 맞을 것 같습니다.
함수가 함수로써의 기능을 가지고 있고,
delete 선언의 경우에는 변수명 지정을 날리는 역할로 보이네요.
예전에 test 했던 delete-가-실제-메모리에-적용되는-타이밍-IE 의 경우에는,
안쪽에 있던 항목들을 삭제하는 기능을 했지만,
function 만 삭제하는 경우에는
function 을 선언하면서 사용한 공간까지는 비우지 못하는 것 같네요.
..라고 적었는데요,
(.. 이후 내용 '12.09.14 14:50 추가본..)
한참 나중(?)에 와서 이 내용을 읽다가 오류를 발견(?)하고,
한번 더 테스트 해봅니다.
*참고* http://buildnewgames.com/garbage-collector-friendly-code/
10)
<div id='output120321_3' >결과출력장소</div>
<script>
function functionSample120321_3() {
var a, b={};
b.c=function (e) {
var d=e;
return function() {
return d;
}
};
a = b.c(3);
delete b.c;
document.getElementById('output120321_3').innerHTML=a()+' '+b.c;
}
functionSample120321_3();
</script>
...
11)
결과출력장소
...
12)
기존 7)번 내용에서
b 가 사라지지않는 버그(?)를 발견(?)하고 급하게 다시 고쳤습니다.
물론, 위의 실험에서 확인하려던 변수값이
사라지지는 않습니다.
.. 뭐랄까요.. 실행했을 때 이미
해당 함수가 할 도리(?)를 다 했다고 봐야하니까요.
function 으로 선언한 내용들은
실행했을 때 의미가 있는 것이지,
function 실행 이전과 이후는
실행했을 때와는 관계가 없는 거라서요..
...
easyBow killofki@.
'baseJavascript' 카테고리의 다른 글
var] 이렇게 선언하면 안된다고 하네요.. (0) | 2012.06.06 |
---|---|
prototype] 쉽게(?) 설정하자면.. (0) | 2012.06.04 |
prototype] function 에 붙어있는 미확인 파라메터 탐색선언자군요.. (1) | 2012.04.17 |
function var] 함수내 함수를 재사용하기 위해 함수내 변수를 전달해보고 싶었습니다. (0) | 2012.04.07 |
var 선언] function 기능을 쓰지 않으면..? (0) | 2011.11.25 |