Javascript 函数中的jQuery在文档外部声明就绪,但从内部调用

Javascript 函数中的jQuery在文档外部声明就绪,但从内部调用,javascript,jquery,Javascript,Jquery,如果只从jQuery document ready块中调用一个声明并附加到全局作用域但具有jQuery依赖代码的函数,始终是否可以正常工作 e、 g: 函数myFunc(){alert($('#someElem').text();} $(函数(){ myFunct(); }) 在实践中,我已经看到了很多这样的功能,这些功能完全被写在单独的文件中。我从未见过它失败,但我有一部分怀疑它是否真的安全 我认为这至少部分取决于DocumentReady是否等待页面加载的javascript编译阶段完成

如果只从jQuery document ready块中调用一个声明并附加到全局作用域但具有jQuery依赖代码的函数,始终是否可以正常工作

e、 g:


函数myFunc(){alert($('#someElem').text();}
$(函数(){
myFunct();
})
在实践中,我已经看到了很多这样的功能,这些功能完全被写在单独的文件中。我从未见过它失败,但我有一部分怀疑它是否真的安全

我认为这至少部分取决于DocumentReady是否等待页面加载的javascript编译阶段完成。但这可能失败还有其他原因吗


请忽略有关污染全局名称空间、可读性等问题。这里我只关心可靠的执行。

只有在
myfunct()
可以从
document.ready()
范围之外访问时,才会编写此类构造。如果其他函数/事件也可能调用它,则最好将其移出

如果只打算调用一次或在特定事件上调用它,则它只能嵌套在调用函数体中

人们甚至可能希望使函数调用完全包含clorjure等结构。在这种情况下,函数也将嵌套在另一个
var
声明中

除此之外,似乎没有其他大的区别

如果我遗漏了什么,请加上


它确实不会失败,查找元素的
$()
函数只在执行
myFunc
函数时执行,并且该函数只执行一次
document.ready
激发,因此元素将在那时可用

全局
myFunc
函数也将始终可用,只要它是在DOM中的
document.ready
code之前定义的


在许多情况下,如果在
文档之后定义,它甚至是可用的。ready
代码as
DOMContentLoaded
(以及其他类似的方法)是异步的,并等待DOM准备就绪,但不能保证所有脚本都会在那时加载,只保证DOM中的元素是可用的,因此,您通常应该确保
myFunc
函数是在
$(function(){…})之前定义的代码。

除非其他外部文件未加载,否则它不会失败…另一种情况是动态加载元素时,“myfunct()”可能出现在“document.ready()”范围之外。例如,如果包含在“document.ready()”块中,则与初始页面加载后按需构建和显示的模式窗口相关的jquery将不起作用,我认为问题不在于什么时候使用全局函数,而在于你是否可以依赖一个全局函数总是在文档准备就绪时可用
<script src = "https://code.jquery.com/jquery-2.1.0.js"></sript>
<script>

    function myFunc(){ alert( $('#someElem').text() ); }

    $(function(){  

       myFunct(); 
    })

</script>