我有一个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;
总而言之,我想知道为什么其中一个有效而不是另一个
答案 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>