jQuery의 document.ready ()에서 함수를 정의 할 수없는 이유는 무엇입니까?
document.ready () 함수에 배치하면 함수가 정의되지 않은 것으로 나타납니다.
$(document).ready(function(){
function foo()
{
alert('Bar');
}
});
foo(); // Undefined
왜 이런 일이 발생합니까? 나는 단순한 이해가 필요하다고 확신합니다. :)
의 범위 내에서 함수를 정의하는 것이 왜 중요한지 확실하지 ready()
않지만 미리 선언 foo
하여 작동하도록 만들 수 있습니다 .
<html><head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
<script>
var foo; // Here's the difference
$(document).ready(function(){
foo = function ()
{
alert('Bar');
}
});
</script></head><body>
<input type="button" onclick="foo()" value="Click me">
</body></html>
코드가 아직 실행되지 않았기 때문에 foo()
즉시 인라인 스크립트에서 호출 할 수 는 없지만 나중에 함수를 호출 할 수 있습니다.ready()
ready()
코드가 실행 foo()
되기 전에 호출을 시도 할 수 없는지 확인하십시오 ready()
(또는 foo()
무해한 함수 의 초기 선언을 작성하십시오 ).
할 수는 있지만 ready()
메서드 범위 내에서 호출해야합니다. 그렇지 않으면 ready()
메서드가 종료 될 때 범위를 잃게 됩니다.
예를 들어 아래 코드는 작동합니다.
$(document).ready(function(){
function foo()
{
alert('Bar');
}
foo(); // still in the scope of the ready method
});
자신의 것이 아닌 범위에 넣으면 정의되지 않은 것으로 나타납니다. $ (document) .ready (...)의 범위 밖에서 정말로 사용하고 싶다면 외부에서 선언해야합니다. 예 :
var foo;
$(document).ready(function(){
foo = function()
{
alert('Bar');
}
});
foo(); // works now because it is in scope
도움이 되었기를 바랍니다.
함수는 $(document).ready()
콜백 범위 내에서 정의 되며 외부 에서 볼 수 없습니다 . 호출 범위 밖에서 함수를 정의하십시오 .$(document).ready()
<script>
$(document).ready(function(){
myfnc = function (param1, param2)
{
alert('Hello');
}
myfnc();
});
</script>
<input type="button" onclick="myfnc('arg1', 'arg2')" value="Click me">
또 다른 추가 :
함수 내에서 함수 나 변수를 선언 $(document).ready()
할 때 onclick()
문서에서 바인드를 사용할 때 이러한 변수 에 액세스 할 수 없습니다 .
You can either move your declarations outside of $(document).ready()
, or you can use $('#element').on('click', function() {})
within `$(document).ready().
참고URL : https://stackoverflow.com/questions/1055767/why-can-i-not-define-functions-in-jquerys-document-ready
'Programing' 카테고리의 다른 글
내 코드가 내가 일하는 회사에서만 사용하는 경우 package.json의 라이센스 필드에 무엇을 입력해야합니까? (0) | 2020.11.28 |
---|---|
VBA 함수 내에서 개체를 Nothing으로 설정해야합니까? (0) | 2020.11.28 |
생성자에서 super () 전에 계산을 수행 할 수 있습니까? (0) | 2020.11.28 |
확장 페이지 DOM 대신 웹 페이지 DOM에 액세스하는 방법은 무엇입니까? (0) | 2020.11.28 |
ContentProviderClient 대 ContentResolver를 사용하여 콘텐츠 제공자에 액세스 (0) | 2020.11.28 |