메뉴 건너뛰기

관리자2019.08.19 10:04

1. obj.onclick = shuffle; 의 뜻은 앞으로 클릭이 일어나면 shuffle 함수를 호출하도록 지금 등록하는 것입니다(지금 호출하는 것이 아니고).
미래에 클릭이 발생할 때의 행동을 등록하는 것이지요.  onclick은 리스너의 주소나 코드를 저장하는 일종의 변수입니다.

obj에 언젠가 클릭이 발생하면 웹브라우저는 obj의 onclick에 등록된 주소를 보고 그때

shuffle()을 호출합니다.

만일 obj.onclick="a=100"; 이라고 하면 

a=100을 지금하는 것이 아니라, a=100이라는 코드를 저장해둡니다.
책 354페이지의 그림 8-6을 보세요. 

2.
a = 3; 은 변수 a에 3을 넣는 것이고

function f() {
return 5;
}
a = f(); 는 함수 f()를 호출하고 그 결과인 5를 변수 a에 넣는 것입니다.
= 연산자는 항상 오른쪽 연산의 결과를 왼쪽에 저장하는 연산을 하지요.
그러므로 obj.onclick = shuffle(); 은 지금 shuffle() 함수를 호출하고 그 결과를 onclick 핸들러에 등록하는 것입니다.
shuffle() 함수가 아무것도 리턴하지 않는다면 click 핸들러에 등록되는 것은 없습니다.
그러면 클릭이 발생해도 아무 일도 일어나지 않습니다.
그래서 이 표현이 잘못되었다는 겁니다.

차분히 다시 생각해 보시고 또 질문 주세요.

파일 첨부

여기에 파일을 끌어 놓거나 파일 첨부 버튼을 클릭하세요.

파일 크기 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )
위로