变量的作用域指变量有效的范围,与变量定义的位置密切相关,作用域是从空间的角度来描述变量的,也可以理解为变量的可见性。在某个范围内变量是可见的,也就是说,变量是可用的。
javascript变量作用域有两种类型:局部作用域、全局作用域。按照作用域的不同,变量可分为全局变量和局部变量。
全局作用域和全局变量
变量在函数外定义为全局变量,全局变量有局作用域:网页中的所有脚本和函数均可使用。
在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:
1、最外层函数和在最外层函数外面定义的变量拥有全局作用域
2、所有末定义直接赋值的变量自动声明为拥有全局作用域
3、所有window对象的属性拥有全局作用域
一般情况下,window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等等。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>全局变量在任何脚本和函数内均可访问。</p> <p id="demo"></p> <script> var carName = "Volvo"; myFunction(); function myFunction() { document.getElementById("demo").innerHTML = "我可以显示 " + carName; } </script> </body> </html>
局部作用域和局部变量
变量在函数内部声明为局部作用域。
和全局作用域相反,局部作用域一般只在固定的代码片段(例:函数)内部可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>局部变量在声明的函数外不可以访问。</p> <p id="demo"></p> <script> myFunction(); document.getElementById("demo").innerHTML = "carName 的类型是:" + typeof carName; function myFunction() { var carName = "Volvo"; } </script> </body> </html>
变量的生存周期
1、对于全局变量来说,其生命周期是永久的,除非主动销毁此全局变量;
2、对于在函数内用var关键字声明的局部变量来说,当退出函数时,这些局部变量即失去它们的价值,它们会随着函数调用的结束而被销毁。
网友评论文明上网理性发言 已有0人参与
发表评论: