先看一下这段Javascript脚本代码:

 1注意细节js变量作用域<script language="javascript">
 2注意细节js变量作用域    <!--
 3注意细节js变量作用域        var v = "aaa"
 4注意细节js变量作用域        function func()
 5>

 

alert 出来的是什么?在我们看来应该是 "aaa",实际上alert 出来的是 "undefined"。为什么?
因为 Javascript为了简化处理,变量实际上只有两种作用域,全局变量和函数的内部变量。你在函数内部任何一个地方定义的变量其作用域都是整个函数体。而在 alert 的时候函数的内部变量 v 已经定义了,并且覆盖掉了同名的全局变量的定义,只是还没有被初始化,所以 alert 出来的是 "undefined"。

 

1.什么是全局变量?

JavaScript中的全局变量实际上指的是window对象下的对象属性。

2.作用域划分。

JavaScript中的作用域是基于上下文,以函数进行划分的,而不是由块(block)划分的。

 

接下来看一个例子(原例来自《精通JavaScript》,有改动):

 

注意细节js变量作用域<script type="text/javascript">
注意细节js变量作用域
注意细节js变量作用域
// 设置全局变量foo,并置为“test”
注意细节js变量作用域
var foo = "test";
注意细节js变量作用域
注意细节js变量作用域
if ( true )
script>

 

 

现在你大概对JavaScript的作用域有了一个初步的理解。

要强调的两点是:

1.在同一作用域中,JavaScript是允许变量的重复定义的,并且后一个定义将覆盖前一个定义。

2.函数内部如果不加关键字var而定义的变量,默认为全局变量。

相关文章:

  • 2021-11-10
  • 2021-11-29
  • 2022-02-18
  • 2022-12-23
  • 2022-12-23
  • 2021-07-10
猜你喜欢
  • 2021-12-07
  • 2021-06-01
  • 2021-09-21
  • 2021-05-14
  • 2022-02-21
  • 2021-07-17
  • 2022-12-23
相关资源
相似解决方案