자바스크립트 함수를 다른 함수에서 실행하려면 어떻게 하나요?
CMS/프레임워크 | 사용안함 |
---|---|
개발 언어 | 사용안함 |
function insertMessage(message){
메시지출력
}
위와 같이 공용으로 쓸 수 있도록 스크립트 함수를 만들었다고 한다면
다른 스크립트에서
위 함수를 실행하려면 별도 방법이 필요한가요?
function other(){
insertMessage('메시지');
}
이렇게 하면 insertMessage 가 정의되지 않았다고 에러가 뜨더라구요.
댓글 3
메시지출력
}
이렇게 전역변수로 함수를 담아서 사용하니 되는 것 같습니다.
function other(){
printMessage('메시지');
}
함수를 어디서 선언했는지에 따라 다릅니다.
$(document).ready(function() {
function insertMessage(message) {
alert(message);
}
});
이런 식으로 다른 함수 안에 감싸진 상태라면, 바깥쪽에 있는 함수에 묶여있으므로
안에서 선언한 함수는 바깥 함수 바깥이나 다른 파일에서 사용할 수 없게 됩니다.
어디에도 감싸져 있지 않은 상태에서 선언하거나, 명시적으로 전역변수로 선언하면
밖에서도 (다른 파일에서도) 사용할 수 있습니다.
var로 선언했다고 전역변수가 되는 것은 아닙니다.
제대로 전역변수를 만들려면 window.함수명 = function ... 으로 선언해야 합니다.
전역변수로 선언하더라도 위와 같이 jQuery 콜백함수에 감싸져 있다면
해당 부분이 실행되는 시점이 다른 스크립트보다 늦어져서,
다른 스크립트에서는 아직 선언되지 않은 것으로 보일 수 있습니다.
function으로 선언한 것과 var로 선언한 것, window.함수명으로 선언한 것이
실행되는 시점이 또 각각 다릅니다. 완전 댕댕이판이예요...
var로 선언했더니 된다고 하신 것을 보면, 전역변수냐 아니냐만의 문제는 아닌 것 같고
실행 시점의 문제도 얽혀 있는 것 같습니다.
$(document).ready(function() {
function insertMessage(message) {
alert(message);
}
});
이렇게 감싸진 곳이라 발생한 문제네요. 밀씀하신 것 참조해서 바꾸보겠습니다.