inflearn logo
강의

講義

知識共有

入門者のためのJavaScriptの基礎講義

タイマー関連機能

질문있습니다.

307

pse67042330

投稿した質問数 3

1

 

안녕하세요. 별거 아닐수도있고,, 이상한 질문이라고 보실 수도 있을 것 같습니다.

갑자기 이해가 되지 않는 부분이 있어서 왜 그런건지 궁금해서 질문드립니다..

 

처음에

setInterval(function(){console.log("hello")},3000)
이렇게 코드를 돌리면, 반복돼서 console에 출력이 되는데,
 
위코드를 지우고, 반환값을 변수에 넣는 코드인 
interId2 = setInterval(function(){console.log("hello")},3000)
이것만 적어도 똑같이 console에서 반복출력이 되는걸 확인했습니다.
 
보통 어떤 동작이 있는 코드를 변수안에 넣어버리면 변수를 초기화하는 것이기 때문에 해당 동작이 이뤄지지는 않지 않나요?? 왜 저거는 그게 되는건지 이유가 궁금합니다.
제대로 잘 적은지 모르겠습니다.. 제가 궁금한 부분이 잘 전달되기를 바랍니다. 
 
감사합니다.
 
 
 
 

javascript

回答 1

0

uknow

안녕하세요. 

setInterval 메소드의 호출문을 변수에 대입했을 때, 변수의 초기화는 이루어지고 메소드의 동작은 이루어지지 않아야 하는 걸로 생각했지만, 결국 둘 다 이루어져서 이유가 궁금하신 듯합니다(맞나요..?).

그러나 메소드(또는 함수)의 호출문을 변수에 대입(=)하는 형태로 코드를 작성하면 둘 다 이루어지는 게 맞습니다. 메소드는 일단 자신의 할일을 수행하고, 값을 반환하면서 역할을 마칩니다. 그러면 이후에 메소드가 반환한 값이 변수에 대입되는 순서로 일이 진행됩니다. (단, 반환값이 없는 메소드의 호출문을 변수에 대입하면 undefined 상태가 됩니다.)

위 예제에서는 setInterval 메소드의 동작으로 인해 3초 후에 콘솔에 "hello"가 출력되도록 예약(?)이 되고요. 이후 setInterval 메소드가 반환한 값이 interId2 변수에 대입이 되는 순서로 진행되겠습니다. 

감사합니다.

 

(ToDoList 실습) ! 연산자에 대해

0

103

1

사진이 나타나지 않아요

0

145

1

디지털 시계 만들기 질문 드립니다.

0

437

1

생성자 함수 관련 질문 드립니다

0

277

1

로또 번호 추첨기 과제 만들기 중

0

254

1

템플릿 리터럴 작동이 되지 않습니다.

0

229

1

배열 메소드 2편 질문 드립니다.

0

256

1

고양이 api

0

505

1

노드와 메소드..

1

321

2

수료 후 수업계획 문의드립니다.

1

528

1

질문합니다!

1

375

1

고양이 api 안되서 알려주신 강아지 api 검색했는데요

1

601

1

미니 프로젝트 포토 앨범

0

339

1

삼항 연산에서 질문

0

299

1

함수 3편 강의 듣고 질문 드립니다!!

0

364

1

Date 강의 질문드립니다.

1

308

1

<input type="button"> 과 <button>차이

1

530

1

재질문)html작성할때

1

255

1

콘솔창에서 결과를 보고싶을때

1

234

1

html 작성할때

1

207

1

자바 스크립트 반복문

1

258

1

상수 선언이랑 prompt 질문이요

1

245

1

이미지 api

0

492

2

로또 번호 추첨하기 中

0

276

1