Programing

jQuery의 document.ready ()에서 함수를 정의 할 수없는 이유는 무엇입니까?

lottogame 2020. 11. 28. 08:33
반응형

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

반응형