无法访问变量

时间:2012-08-21 05:23:54

标签: javascript variables global-variables

我有两个外部Javascript文件。我在一个文件中声明了一个变量,我试图从其他文件中访问该变量。当我尝试访问它时,它会返回undefined

<script src="script1.js"></script>
<script src="script2.js"></script>

SCRIPT1

$(function(){

    var myvar=35;
});

SCRIPT2

$(function(){

    alert(myvar); //this line causing error undefined.

});

3 个答案:

答案 0 :(得分:3)

您的变量不是全局变量。您已在函数内声明它,因此它是该函数的本地函数。您需要将var语句移到文档就绪函数之外:

var myvar=35;

$(function(){
    // other document ready stuff here, including
    // using or assigning a value to myvar if needed
});

然后它将是全局范围的,可以从其他脚本文件访问(只要它们被包含在声明它之后)。

如果在文档就绪之前您不知道要分配的值,请执行以下操作:

var myvar;       // declare variable

$(function(){
    myvar = 35;  // assign value
});

由于在其他脚本的文档就绪处理程序运行之前不尝试使用该值,因此没问题。

答案 1 :(得分:1)

Script1.js

  var i=10;

Script2.js

  function call(){
      alert(i);
  }

Sample.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<script type="text/javascript" charset="utf-8" src="Script1.js" ></script>
<script type="text/javascript" charset="utf-8" src="Script2.js" ></script>
<script>
</script>
<BODY onload='call();'>
</BODY>
</HTML>

希望这有助于你

答案 2 :(得分:1)

添加答案,如果您在第一个javascript文件中删除了“var”关键字,您的代码就可以正常工作。 。 。

删除'var'将值赋给全局变量,如果不存在,则创建全局变量。 。 .so,它将与全局myvar相同

  <script src="script1.js"></script>
  <script src="script2.js"></script>

SCRIPT1:

$(function(){


myvar=35;

});

SCRIPT2:

$(function(){

alert(myvar); //this will work

});