Javascript作用域(局部和全局作用域)详细介绍
Javascript作用域 (局部作用域和全局作用域) 详细介绍
作用域是当前的执行上下文,值和表达式在其中“可见”或可被访问。
常见的作用域为:
全局作用域:脚本模式运行所有代码的默认作用域
函数作用域:由函数创建的作用域
局部作用域:用对象{}包着(一个代码块)创建出来的作用域
在了解作用域之前先看一下全局变量和局部变量
全局变量
1、在全局作用域下声明的变量叫做 全局变量(在函数外部定义的变量)2、全局变量在全局(代码的任何位置)下都可以使用;全局作用域中无法访问到局部作用域中的变量。
以下我们用var创建的就是全局变量:
<script> var value = 66; function method(){ console.log(value); } method(); console.log(value); </script>
全局变量会提升但并不会赋值:所以 在创建之前log是undefined 的亿点小知识:变量提升和上文提到触发时间有关。我们知道,var 和 function 声明的变量可以在声明前访问,这就是因为变量提升的缘故。
<script> console.log(value); // undefined var value = 66; console.log(value); // 66 </script>
局部变量
1、在局部作用域下声明的变量叫做局部变量(在函数内部定义的变量)2、局部变量只能在函数内部使用,在局部作用域中可以访问到全局变量。
在函数的内部创建变量也是局部变量:
<script> function method(){ var value = 66; console.log(value); // 66 } method(); console.log(value); //value is not defined </script>
全局作用域和局部作用域的区别
- 全局作用域
全局作用域中的变量称为全局变量,可以在任何作用域内访问。有两种全局变量:
1.全局声明变量是普通变量,在最顶级由 const、let 和 class 声明的变量。
2.全局对象是存储在全局对象中的属性亿点小知识:所有创建的变量都会作为 window 对象的属性保存
<script> var value = 66; // 在整个全局都可以获取到 value function method(){ console.log(value); // 全局方法内部也可以获取到 value } method(); </script>
- 局部作用域
作用域对变量来说,可以简单理解为程序能够访问到变量的范围,超过作用域的就无法访问。
{ // 外面这个 a 作用域,可以访问变量 a const a = 0; console.log(a); // 0 { // 里面这个 b 作用域,可以访问 a、b const b = 1; console.log(a); // 0 console.log(b); // 1 } } // 最外面的作用域 不能访问 a,b console.log(a); // 报错:Uncaught ReferenceError: a is not defined
- 函数作用域
在函数内部定义的变量,就是局部作用域。函数作用域内,对外是封闭的,从外层的作用域无法直接访问函数内部的作用域
function method(){ let value = '内容'; } console.log(value ) //报错:ReferenceError:value is not defined
以上就是Javascript作用域 (局部和全局作用域) 详细介绍的详细内容,更多关于Javascript 作用域的资料请关注脚本之家其它相关文章!
相关文章
javascript 拷贝节点cloneNode()使用介绍
这篇文章主要介绍了javascript 节点操作拷贝节点cloneNode()的使用,需要的朋友可以参考下2014-04-04
最新评论