为什么window.data工作而不是数据

时间:2015-11-10 01:44:12

标签: javascript html

我有一个html文件,在正文末尾有一些内联JavaScript,用于定义全局变量数据。头文件中包含一个JavaScript文件,JavaScript文件中的一个函数使用变量中的值。

由于文件是在变量定义之前包含的,因此JavaScript文件中的变量返回undefined。但是window.variable返回变量。我是否缺少一般规则,或者这只是我的一个巧合。

HTML简化:

<script src='myFile.js' language='JavaScript' type='text/javascript'></script>
<script language="javascript">
    var inLine = "abcde"; 
</script>

myFile.js不起作用(返回undefine inLine):

var insideFile = inLine.length;

myFile.js有效:

var insideFile = window.inLine.length;

总而言之,我想知道为什么其中一个有效而不是另一个

2 个答案:

答案 0 :(得分:1)

在定义变量之前包含你的js文件,这意味着文件中的代码在定义此变量之前运行,所以你得到了错误。

您没有收到window.varname错误的原因也是您不会因此而收到错误的原因:

var obj = {};
console.log(obj.a);

当你在对象上查找属性并且它不存在时Javascript显示未定义。

答案 1 :(得分:0)

  

总而言之,我想知道为什么其中一个有效而不是另一个

如果defer属性设置为"myFile.js"

,则可能会返回定义结果且无错误的一种方法

<script src="data:text/javascript,var insideFile = window.inLine.length;console.log(inLine, insideFile)" 
  type="text/javascript" defer></script>
<script type="text/javascript">
  var inLine = "abcde";
  console.log(window.inLine)
</script>