이야기앱 세상
setTimeout 사용시 Uncaught TypeError: Illegal invocation이 발생할 경우 본문
setTimeout 사용시 Uncaught TypeError: Illegal invocation이 발생할 경우
storya 2022. 1. 4. 22:15setTimeout 사용시 Uncaught TypeError: Illegal invocation이 발생할 경우
setTimeout(function,delay)는 지정한 시간이후 매개변수로 전달되는 함수를 실행하는 함수이다.
1. 함수명을 setTimeout의 매개변수에 지정해서 사용할 수 있다.
function check(){
alert("실행");
}
setTimeout(check,300);
2. 익명함수를 setTimeout의 매개변수에 지정해서 사용할 수 있다.
setTimeout(function(){
alert("실행");
},300);
3. 화살표 함수를 이용해서 지정
setTimeout(()=>alert("실행"),3000);
4. setTimeout 사용시 Uncaught TypeError: Illegal invocation이 발생할 경우
setTimeout(history.back,3000) 와 같은 코드를 실행하면 Uncaught TypeError: Illegal invocation이 발생한다. 매개변수로 전달되는 history.back 메서드가 history에 객체의 메서드로 인식하지 못 해서 발생하는 문제이다. 이런 문제가 생길 경우 익명함수를 만들어서 내부에서 history.back()메서드를 실행하거나 화살 함수 또는 bind()메서드를 사용할 수 있다.
[익명함수 사용]
setTimeout(function(){
history.back();
},300);
[화면표 함수 사용]
setTimeout(()=>history.back(),3000);
[bind()메서드 사용]
setTimeout(history.back.bind(history),3000); 또는 setTimeout(window.history.back.bind(window.history),3000);
[문자열로 명시하는 방법은 권장하지 않음]
setTimeout("history.back()",3000) 함수 대신 문자열로 명시하면 실행은 되지만 보안 취약점 때문에 권장하지 않음
'IT > JavaScript' 카테고리의 다른 글
CKEditor5에서 값을 읽기, 셋팅하기(또는 초기화) (0) | 2022.08.29 |
---|---|
자바스크립트를 이용해서 스크롤을 DIV의 맨 아래로 이동하기 (0) | 2022.02.06 |
CKEditor5 다운로드 및 사용법 (0) | 2020.12.28 |
자바스크립트를 이용해서 접속한 기기가 PC인지 모바일인지 확인하기 (0) | 2020.08.18 |
자바스크립트를 이용한 시작날짜와 끝날짜의 일수 계산하기 (0) | 2017.07.03 |