Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中无法识别全局范围中的变量_Javascript_Jquery - Fatal编程技术网

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);    
});