inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Bài giảng cơ bản về JavaScript cho người mới bắt đầu

Các chức năng liên quan đến hẹn giờ

질문있습니다.

307

pse67042330

3 câu hỏi đã được viết

1

 

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

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

 

처음에

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

javascript

Câu trả lời 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