Javascript 文档就绪功能中的全局范围
可能重复:Javascript 文档就绪功能中的全局范围,javascript,jquery,scope,Javascript,Jquery,Scope,可能重复: 如何在以下范围内创建变量和函数: $(function() { }) 全球范围 你有这些选择 可以在函数作用域之前预先声明变量 您可以使用窗口前缀将它们设置为全局范围 选项1: 选项2: 你有这些选择 可以在函数作用域之前预先声明变量 您可以使用窗口前缀将它们设置为全局范围 选项1: 选项2: 如果您希望闭包中的代码在全球范围内可用,那么我建议使用。例如: var myNameSpace = myNameSpace || {} //create a namespace 使用名
如何在以下范围内创建变量和函数:
$(function() { })
全球范围 你有这些选择
窗口
前缀将它们设置为全局范围你有这些选择
窗口
前缀将它们设置为全局范围如果您希望闭包中的代码在全球范围内可用,那么我建议使用。例如:
var myNameSpace = myNameSpace || {} //create a namespace
使用名称空间可以确保不会污染全局名称空间。然后在闭包内部,可以使用对象、函数和变量扩展名称空间:
$(function(){
if(myNameSpace){
myNameSpace.function1 = function(p1){ return $(p1).val() };
myNameSpace.function2 = function(p2){ return $(p2).val() };
}
})();
function1和function2应该通过myNameSpace“全局”可用。如果您希望闭包中的代码全局可用,那么我建议使用。例如:
var myNameSpace = myNameSpace || {} //create a namespace
使用名称空间可以确保不会污染全局名称空间。然后在闭包内部,可以使用对象、函数和变量扩展名称空间:
$(function(){
if(myNameSpace){
myNameSpace.function1 = function(p1){ return $(p1).val() };
myNameSpace.function2 = function(p2){ return $(p2).val() };
}
})();
function1和function2应该通过myNameSpace“全局”可用。是什么阻止您全局声明它们?@Felix yes(window.variable=variable)正在工作-重复问题。。我的错。。谢谢是什么阻止您全局声明它们?@Felix yes(window.variable=variable)正在工作-重复问题。。我的错。。谢谢嗯,$(function(){})的唯一用途是在文档就绪时启动,对吗?因此,我可以在$(function(){})之前声明函数,并在$(function(){})中设置它们。另外,在选项#1中,如果在$(function(){}中更改myGlobal,它是否会因为全局声明而全局更改?@bushdiver-是的。javascript解释器首先查看本地范围。如果在局部范围中找不到该变量,然后,它会查看具有该名称的变量的更高的作用域,直到全局作用域。@jfriend00使用JS命名空间约定来最小化全局作用域中变量名称冲突的风险不是更好吗?@rafiki_rafi-问题是专门关于如何将内容放入全局作用域的。长得多的讨论可能会讨论为什么将不必要的东西放在全局范围内是件坏事,但这并不是我们要问的,我们需要更多地了解OP的实际问题,才能知道还有什么可以建议的。嗯,$(function(){})的唯一目的是激发文档就绪,对吗?因此,我可以在$(function(){})之前声明函数,并在$(function(){})中设置它们。另外,在选项#1中,如果在$(function(){}中更改myGlobal,它是否会因为全局声明而全局更改?@bushdiver-是的。javascript解释器首先查看本地范围。如果在局部范围中找不到该变量,然后,它会查看具有该名称的变量的更高的作用域,直到全局作用域。@jfriend00使用JS命名空间约定来最小化全局作用域中变量名称冲突的风险不是更好吗?@rafiki_rafi-问题是专门关于如何将内容放入全局作用域的。更长时间的讨论可以讨论为什么将不必要的东西放在全局范围内是件坏事,但这并不是我们要问的问题,我们需要更多地了解OP的实际问题,才能知道还有什么建议。从中可以看出,OP的代码是
.ready()
的简写符号。你的答案不是OP所要求的。啊,很高兴知道,我已经习惯看到$(文档)。准备好了(处理程序),不是OP写的方式!文章经过编辑以避免误导他人,从中可以看出,OP的代码是.ready()
的简写符号。你的答案不是OP所要求的。啊,很高兴知道,我已经习惯看到$(文档)。准备好了(处理程序),不是OP写的方式!这篇文章经过编辑以避免误导他人