본문 바로가기

Front-end/Javascript4

[에러해결] JS - module 내의 함수 연동 에러(Uncaught ReferenceError) 아래와 같이 인라인으로 js로 작성한 함수를 호출했는데 //HTML 뒤로가기 이런 에러가 생겼다. 문제의 원인은 함수를 작성한 자바스크립트 파일을 '모듈'로서 연동한 것이었다. 일반적인 [type="text/javascript"] 호출 방식와 모듈의 차이 중의 하나는 스코프가 다른 것인데, 모듈 내에서 선언한 함수는 해당 모듈 내에서만 사용할 수 있기 때문에, 위와 같은 에러가 발생한 것이다. 새롭게 js파일을 생성하거나, html 내에서 직접 작성하는 것으로 문제를 해결할 수 있다! 2022. 5. 10.
[JS] this와 bind() 메서드, 그리고 정적 / 동적 문맥 작업을 하다 this / bind() 대한 이해가 없어 벽에 부닺혀 짧게 나마 얻게 된 내용을 정리하려고 한다. this는 쓰여진 상황에 따라 다르게 동작하는 아주 고약한 놈이다. 그 상황에는 크게 3가지가 있다. 1. 기본 백지 스크립트에서 this를 쓰면 전역개채인 window를 참조한다. 그럼 함수 안에서 this를 쓴다면? 그래도 window를 참조한다. 2. 생성자(constructor) 안 생성자 안에서는 클래스의 맴버를 정의하거나, 클래스의 멤버를 가리킨다. Class A { constructor() { this name = 'gildong' this.getName(); // 같은 클래스 내의 함수에 접근하려면, this를 붙여야함 } getName() { console.log(this.na.. 2022. 5. 5.
[에러해결] JS - focus is not a function 오류 엘리멘트에 다음과 같이 focus()로 포커스를 주고싶었으나, focus is not a function에러가 발생했다. const emailBox = document.querySelector(".email"); const email = emailBox.value; email.focus(); 이유는 포커스를 인풋 엘리먼트가 아니라 그것의 value에게 줬었다.. String에는 focus()메소드가 없다..! 2022. 5. 2.
[에러 해결] javascript - 일정 시간이 지난 후 반복 실행 후 정 아래와 같이 setTimeout 함수 내에 setInterval을 실행했더니, 나중에 clearInterval함수가 작동하지 않는 문제가 생겼다. setTimeout(() => { const move_interval = setInterval(move, 50); }, 2500); 이유는 setInterval의 아이디를 할당한 변수가 지역변수이기 때문에 scope 밖에서 읽을 수 없었던 것. 이를 해결하기 위해, 함수 밖에서 move_interval을 전역변수로 선언했더니, 해결됐다. const move_interval = null; setTimeout(() => { move_interval = setInterval(move, 50); }, 2500); clearInterval(move_interval); 2022. 4. 30.