현재 시각을 가져오는 방법이 예제에서 보니
var d = new Date() 이던데요,
1) 변수 d의 scope 특성상 다른 함수에서도 사용하려면 d를 글로벌변수로 선언하거나 각 변수별로 다시 선언하거나 해야할 거 같은데, d가 로컬변수로 사용되다면 함수를 종료할 때 자연히 소멸자가 불리워져서 메모리 문제가 없어질 거 같은데 맞나요?
2) 글로벌변수로 선언할 경우 delete d와 같은 문장으로 수동으로 소멸자를 불러해줘야 할 거 같은데, 문법이 맞는지요? 일단 아래 예1과 같이 해보았는데, 굳이 이렇게 할 필요없이 d를 각 함수의 local 변수로 선언해주고 예2와 같이 해도 문제가 없을까요? 동작은 되겠으나 메모리 문제가 발생하지 않는 깔끔한 방법을 선택하고자 합니다. 답변 부탁드립니다.
//tdelay는 입력변수로 3이라고 입력하면 3초로 인식하도록 하였습니다.
//예1
var d;
function Main_OnStart()
{
d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var MMM = d.getMilliseconds();
Main.MessageList(HHMMSS+"."+MMM);
Main.SetTimer(1, tdelay*1000);
delete d;
}
function Main_OnTimer(nEventID)
{
d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var MMM = d.getMilliseconds();
Main.MessageList(HHMMSS+"."+MMM);tdelay
Main.MessageList(tdelay+"초경과");
delete d;
}
//예1
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var MMM = d.getMilliseconds();
Main.MessageList(HHMMSS+"."+MMM);
Main.SetTimer(1, tdelay*1000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var MMM = d.getMilliseconds();
Main.MessageList(HHMMSS+"."+MMM);tdelay
Main.MessageList(tdelay+"초경과");
}
답변 2
Date 객체는 자바스크립트에서 제공하는 기본 객체니
가비지 컬렉션에 대해서는 자바스크립트 관련 서적을
참고하시는 게 정확한 결과를 얻으실 수 있을 겁니다.
굳이 delete 할 필요는 없는 걸로 알고 있습니다.
아, 참고로 스팟에서 사용하는 자바스크립트 엔진이 구글에서
만든 걸로 알고 있습니다.
객체 recycle에 대한 내용도 나오네요.
관련 구글 홈페이지를 참고해보세요.
> 온고지신 님이 쓴 글입니다.
> 제목 : new Date() 문의
> 현재 시각을 가져오는 방법이 예제에서 보니
var d = new Date() 이던데요,
1) 변수 d의 scope 특성상 다른 함수에서도 사용하려면 d를 글로벌변수로 선언하거나 각 변수별로 다시 선언하거나 해야할 거 같은데, d가 로컬변수로 사용되다면 함수를 종료할 때 자연히 소멸자가 불리워져서 메모리 문제가 없어질 거 같은데 맞나요?
2) 글로벌변수로 선언할 경우 delete d와 같은 문장으로 수동으로 소멸자를 불러해줘야 할 거 같은데, 문법이 맞는지요? 일단 아래 예1과 같이 해보았는데, 굳이 이렇게 할 필요없이 d를 각 함수의 local 변수로 선언해주고 예2와 같이 해도 문제가 없을까요? 동작은 되겠으나 메모리 문제가 발생하지 않는 깔끔한 방법을 선택하고자 합니다. 답변 부탁드립니다.
//tdelay는 입력변수로 3이라고 입력하면 3초로 인식하도록 하였습니다.
//예1
var d;
function Main_OnStart()
{
d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var MMM = d.getMilliseconds();
Main.MessageList(HHMMSS+"."+MMM);
Main.SetTimer(1, tdelay*1000);
delete d;
}
function Main_OnTimer(nEventID)
{
d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var MMM = d.getMilliseconds();
Main.MessageList(HHMMSS+"."+MMM);tdelay
Main.MessageList(tdelay+"초경과");
delete d;
}
//예1
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var MMM = d.getMilliseconds();
Main.MessageList(HHMMSS+"."+MMM);
Main.SetTimer(1, tdelay*1000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var MMM = d.getMilliseconds();
Main.MessageList(HHMMSS+"."+MMM);tdelay
Main.MessageList(tdelay+"초경과");
}
요즘 스팟 담당자분이 바쁘신지 답글이 한달째 안올라 와서 답답해 하던 중이었는데,
꿀같은 답변에 깊은 감사드립니다~ :)
> 불꽃기사 님이 쓴 글입니다.
> 제목 : 지나가다 답변드립니다.
> Date 객체는 자바스크립트에서 제공하는 기본 객체니
가비지 컬렉션에 대해서는 자바스크립트 관련 서적을
참고하시는 게 정확한 결과를 얻으실 수 있을 겁니다.
굳이 delete 할 필요는 없는 걸로 알고 있습니다.
아, 참고로 스팟에서 사용하는 자바스크립트 엔진이 구글에서
만든 걸로 알고 있습니다.
객체 recycle에 대한 내용도 나오네요.
관련 구글 홈페이지를 참고해보세요.
> 온고지신 님이 쓴 글입니다.
> 제목 : new Date() 문의
> 현재 시각을 가져오는 방법이 예제에서 보니
var d = new Date() 이던데요,
1) 변수 d의 scope 특성상 다른 함수에서도 사용하려면 d를 글로벌변수로 선언하거나 각 변수별로 다시 선언하거나 해야할 거 같은데, d가 로컬변수로 사용되다면 함수를 종료할 때 자연히 소멸자가 불리워져서 메모리 문제가 없어질 거 같은데 맞나요?
2) 글로벌변수로 선언할 경우 delete d와 같은 문장으로 수동으로 소멸자를 불러해줘야 할 거 같은데, 문법이 맞는지요? 일단 아래 예1과 같이 해보았는데, 굳이 이렇게 할 필요없이 d를 각 함수의 local 변수로 선언해주고 예2와 같이 해도 문제가 없을까요? 동작은 되겠으나 메모리 문제가 발생하지 않는 깔끔한 방법을 선택하고자 합니다. 답변 부탁드립니다.
//tdelay는 입력변수로 3이라고 입력하면 3초로 인식하도록 하였습니다.
//예1
var d;
function Main_OnStart()
{
d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var MMM = d.getMilliseconds();
Main.MessageList(HHMMSS+"."+MMM);
Main.SetTimer(1, tdelay*1000);
delete d;
}
function Main_OnTimer(nEventID)
{
d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var MMM = d.getMilliseconds();
Main.MessageList(HHMMSS+"."+MMM);tdelay
Main.MessageList(tdelay+"초경과");
delete d;
}
//예1
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var MMM = d.getMilliseconds();
Main.MessageList(HHMMSS+"."+MMM);
Main.SetTimer(1, tdelay*1000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var MMM = d.getMilliseconds();
Main.MessageList(HHMMSS+"."+MMM);tdelay
Main.MessageList(tdelay+"초경과");
}