浏览器如何处理Javascript变量范围?

时间:2017-02-16 21:14:07

标签: javascript html5

我有一个包含多个脚本标记的Web应用程序。

假设我在标记中有一个名为 customPage 的变量:

<script type="text/javascript">
    var customPage = callSomeFunction();
<script>

Elsewhere in the page...

<script type="text/javascript">
    var customPage = callSomeOtherFunction();
<script>

这些JavaScript变量的范围是什么,因为它们都是使用相同的名称定义的?他们会互相覆盖吗?或者他们都在自己的范围内有价值吗?

1 个答案:

答案 0 :(得分:0)

<script>元素的“顶部”级别声明的变量是Global JavaScript对象的一部分。在Web浏览器中,这使它们成为window对象的属性。

无论运行哪个代码,都会覆盖第一个代码示例中变量的值。

<script>
var foo = "hello";
console.log(foo, window.foo);
</script>

<script>
var foo = "world";
console.log(foo, window.foo);
</script>

上面的代码段显示:

hello hello
world world

(这也表明你可以自己测试出这个问题的答案。TIAS!