스택큐힙리스트

TypeError: (중간 값)(...)은(는) 함수가 아닙니다. 본문

카테고리 없음

TypeError: (중간 값)(...)은(는) 함수가 아닙니다.

스택큐힙리스트 2023. 12. 4. 16:20
반응형

내가 작성한 자바스크립트 로직을 단일 js 파일의 클로저로 작성할 때 모든 것이 잘 작동합니다:


(function(win){
//주 로직이 여기에 있습니다
win.expose1 = ....
win.expose2 = ....
})(window)

그러나 동일한 js 파일의 클로저 이전에 대체 기능으로 로깅 함수를 삽입하려고 시도하면 다음과 같은 TypeError가 발생합니다:


window.Glog = function(msg){
console.log(msg)
}
//이것은 주 클로저 이전에 추가되었습니다.
(function(win){
//주 자바스크립트 로직을 포함하는 이전 클로저
})(window)

무엇이 잘못되었나요?

답변 1

에러는 세 번째 줄의 세미콜론이 누락되어 발생합니다:


window.Glog = function(msg) {
console.log(msg);
}; // <--- 이 세미콜론을 추가하세요
(function(win) {
// ...
})(window);

ECMAScript 명세에는 자동 세미콜론 삽입에 대한 특정 규칙이 있지만, 이 경우에는 세미콜론이 자동으로 삽입되지 않습니다. 왜냐하면 다음 줄에서 시작하는 괄호로 둘러싸인 표현식이 함수 호출의 인수 목록으로 해석될 수 있기 때문입니다.


따라서 그 세미콜론이 없다면, 익명의 window.Glog 함수가 함수를 msg 매개변수로 사용하여 호출되었고, 이어서 (window)가 반환된 것을 호출하려고 시도했습니다.


이렇게 코드가 해석되었습니다:

window.Glog = function(msg) {
console.log(msg);
}(function(win) {
// ...
})(window);

window.Glog = function(msg) {
console.log(msg);
}(function(win) {
// ...
})(window);

답변 2

표제: Uncaught TypeError: (중간 값)(...)은(는) 함수가 아닙니다. 에 대한 SEO-의식을 담은 한국어 에세이
서론:
최근 웹 개발에서 자주 보이는 Uncaught TypeError: (중간 값)(...)은(는) 함수가 아닙니다.라는 오류 메시지에 대해 이야기해보고자 합니다. 이 글에서는 이 오류의 의미와 원인, 그리고 이 문제를 해결하는 방법을 알아보겠습니다. 웹 개발자이거나 웹 개발에 관심을 가진 분들에게 이 글이 도움이 될 것입니다.
본론:
1. Uncaught TypeError: (중간 값)(...)은(는) 함수가 아닙니다. 오류가 무엇을 의미하는지 알아봅시다.
이 오류는 JavaScript 프로그래밍 환경에서 발생하는 오류로, 변수나 속성이 함수가 아닌 것으로 간주될 때 주로 발생합니다. 즉, 프로그램이 함수로 예상되는 값에 접근하려고 할 때 발생하는 오류입니다.
2. Uncaught TypeError: (중간 값)(...)은(는) 함수가 아닙니다. 오류 발생의 주요 원인은 다음과 같습니다:
- 변수 또는 속성에 잘못된 값을 할당한 경우
- 함수 대신 객체 또는 다른 유형의 값에 접근하려고 시도한 경우
- 함수 이름을 잘못 입력하여 잘못된 함수에 접근한 경우
3. 이 문제를 해결하는 방법:
- 오류가 발생하는 JavaScript 코드를 주의 깊게 살펴보고 오류를 일으키는 줄을 찾아 수정해야 합니다. 고려해야 할 가능한 수정 사항에는 변수 또는 속성에 올바른 값을 할당하는 것, 정확한 함수에 접근하는 것 등이 있습니다.
- 변수 또는 속성에 할당 된 값은 JavaScript에서 예상한 유형인지 확인해야 합니다. 우리가 원하는 대로 변수 또는 속성에 함수를 할당했는지 확인하고 필요한 경우 수정해야 합니다.
- JavaScript 코드의 함수 이름을 확인하고, 정확한 함수를 참조하도록 수정해야 합니다. 때로는 함수 이름을 잘못 입력하는 실수가 발생할 수 있기 때문에 이를 유의해야 합니다.
결론:
이번 에세이에서는 Uncaught TypeError: (중간 값)(...)은(는) 함수가 아닙니다. 오류에 대해 알아보고 해결하는 방법에 대해 살펴보았습니다. 웹 개발에서 발생하는 이러한 오류는 코드의 실수나 타입 불일치로 인해 발생할 수 있습니다. 따라서 개발자들은 이러한 오류를 방지하기 위해 주의 깊게 코드를 작성하고 오류를 수정하는 데 필요한 조치를 취해야 합니다.

반응형
Comments