javascript中无法识别全局范围中的变量
是这样的:javascript中无法识别全局范围中的变量,javascript,jquery,Javascript,Jquery,是这样的: <script> var global_var = {foo:1}; </script> <script src="myscript.js"></script> 但是在我的第二个脚本中似乎没有识别出全局变量,尽管我在第一个脚本中明确定义了它,就像一个全局变量一样 问题在于jQuery函数中的var global_var中的var。这是在函数中创建一个不同的全局变量,而不是使用真正的全局变量。删除此选项,代码将按预期工作。问题在于
<script>
var global_var = {foo:1};
</script>
<script src="myscript.js"></script>
但是在我的第二个脚本中似乎没有识别出全局变量,尽管我在第一个脚本中明确定义了它,就像一个全局变量一样
问题在于jQuery函数中的var global_var中的var。这是在函数中创建一个不同的全局变量,而不是使用真正的全局变量。删除此选项,代码将按预期工作。问题在于jQuery函数中的var global\u var中的var。这是在函数中创建一个不同的全局变量,而不是使用真正的全局变量。删除此项,您的代码将按预期工作。尝试在不使用var键的情况下定义它,使其在全局范围内工作
<script>
var global_var = {foo:1};
</script>
<script>
jQuery(document).ready(function($){
global_var = typeof global_var === 'undefined' ? {foo:2} : global_var;
alert(global_var.foo); // should be 1
});
</script>
尝试在不使用var键的情况下定义它,使其在全局范围内工作
<script>
var global_var = {foo:1};
</script>
<script>
jQuery(document).ready(function($){
global_var = typeof global_var === 'undefined' ? {foo:2} : global_var;
alert(global_var.foo); // should be 1
});
</script>
这是因为您在当前范围中声明了另一个全局变量。删除变量或更改变量名称: 乙二醇
这是因为您在当前范围中声明了另一个全局变量。删除变量或更改变量名称: 乙二醇 试试这个
jQuery(document).ready(function($){
global_var = typeof global_var == 'undefined' ? {foo:2} : global_var;
console.log(global_var);
});
试试这个
jQuery(document).ready(function($){
global_var = typeof global_var == 'undefined' ? {foo:2} : global_var;
console.log(global_var);
});
不能在同一范围内使用来自不同范围的同名两个不同变量。因此,当您使用var关键字声明本地全局变量时,您的全局变量将变得不可访问 如果需要使用与全局变量同名的局部变量,可以使用如下闭包:
jQuery(document).ready(function($){
(function(global_var){
// global_var is a local copy of global_var from the outer scope
global_var = typeof global_var == 'undefined' ? {foo:2} : global_var;
console.log(global_var);
})(global_var);
});
如果您知道它是全局的,也可以将其称为窗口对象的属性:
jQuery(document).ready(function($){
var global_var = typeof window.global_var == 'undefined' ?
{foo:2} : window.global_var;
console.log(global_var);
});
最后,如果您不想要本地副本,只想从外部作用域访问变量,那么不要使用var关键字,因为该关键字的目的是声明一个新变量:
jQuery(document).ready(function($){
global_var = typeof global_var == 'undefined' ? {foo:2} : global_var;
console.log(global_var);
});
不能在同一范围内使用来自不同范围的同名两个不同变量。因此,当您使用var关键字声明本地全局变量时,您的全局变量将变得不可访问 如果需要使用与全局变量同名的局部变量,可以使用如下闭包:
jQuery(document).ready(function($){
(function(global_var){
// global_var is a local copy of global_var from the outer scope
global_var = typeof global_var == 'undefined' ? {foo:2} : global_var;
console.log(global_var);
})(global_var);
});
如果您知道它是全局的,也可以将其称为窗口对象的属性:
jQuery(document).ready(function($){
var global_var = typeof window.global_var == 'undefined' ?
{foo:2} : window.global_var;
console.log(global_var);
});
最后,如果您不想要本地副本,只想从外部作用域访问变量,那么不要使用var关键字,因为该关键字的目的是声明一个新变量:
jQuery(document).ready(function($){
global_var = typeof global_var == 'undefined' ? {foo:2} : global_var;
console.log(global_var);
});
出现此问题是因为您正在声明与全局变量同名的局部变量,因此全局变量不再可见。您仍然可以通过显式指定范围来访问它:
jQuery(document).ready(function($){
var global_var = typeof window.global_var == 'undefined' ? {foo:2} : window.global_var;
console.log(global_var);
});
出现此问题是因为您正在声明与全局变量同名的局部变量,因此全局变量不再可见。您仍然可以通过显式指定范围来访问它:
jQuery(document).ready(function($){
var global_var = typeof window.global_var == 'undefined' ? {foo:2} : window.global_var;
console.log(global_var);
});