作用域是可访问的变量的集合. 在 JavaScript 中, 作用域为可访问变量, 对象, 函数的集合, 它分为局部作用域和全局作用域.
作用域决定了这些变量的可访问性 (可见性).
局部作用域:
变量在函数内部声明为局部作用域, 局部变量只作用于函数内.
- <!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>
输出:
局部变量在声明的函数外不可以访问.
carName 的类型是: undefined
不同的函数可以使用相同名称的变量, 它只能在函数内部访问. 局部变量在函数开始执行时创建, 函数执行完成后局部变量会自动销毁.
函数内部定义的变量从函数外部是不可访问的 (不可见的).
全局作用域:
变量在函数外定义为全局变量, 全局变量有局作用域: 网页中的所有脚本和函数均可使用.
- <!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>
输出:
全局变量在任何脚本和函数内均可访问.
我可以显示 Volvo
注: 若变量在函数内部没有声明 (未使用 var 关键字), 该变量为全局变量.
来源: http://www.css88.com/qa/javascript/10953.html