变量的作用域指变量有效的范围,与变量定义的位置密切相关,作用域是从空间的角度来描述变量的,也可以理解为变量的可见性。在某个范围内变量是可见的,也就是说,变量是可用的。
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人参与
发表评论: