在文件之间共享变量(无全局变量)

时间:2019-03-26 21:32:57

标签: javascript ecmascript-6

据我了解,在Javascript中用let创建的变量不能是全局的。我认为这意味着该变量仅存在于该特定文件中。

但是,当我创建一个简单/人为的示例时:

A.js:

let a = 5;

B.js:

console.log(a);

index.html:

<script type="text/javascript" src="A.js"></script>
<script type="text/javascript" src="B.js"></script>

它记录5!奇怪的是,如果我登录window.a时,日志记录为undefined,那么将创建全局变量。

我的问题是,变量如何在文件之间共享而不成为全局变量?

2 个答案:

答案 0 :(得分:3)

它停留在当前作用域内,即最外部的块作用域(或Bergi很好地提到的全局作用域),所以这将起作用

<script>
let world = 'world';
</script>
<script>
console.log( `hello ${world}` );
</script>

否则就不会

<script>
{
  let world = 'world';
}
</script>
<script>
console.log( `hello ${world}` );
</script>

使用2个不同的文件真的没关系。最后,所有加载的脚本都相互重叠,优化并执行

答案 1 :(得分:1)

这是全局范围内的常规变量。

使用多个脚本源并不意味着使用多个解释器。