javaScript教程50: 变量查找规则与词法作用域
Posted 前端工程师·邢晋宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaScript教程50: 变量查找规则与词法作用域相关的知识,希望对你有一定的参考价值。
作用域:
1 在es5.0中只有函数可以构成一个作用域 2 全局作用域: 整个js代码执行的环境 3 局部作用域: 函数可以构成一个局部作用域 4 全局变量: 在全局作用域中申明的变量 5 局部变量: 在函数构成的局部作用域中申明的变量
var a = 1; function fn(){ var a = 2; function fnA(){ a = 3; console.log(a); //3 } fnA(); console.log(a); // 3 } fn(); console.log(a);// 1
词法作用域(静态作用域):
- 外部作用域不能访问内容作用域的变量
- 查找变量时,顺着作用域链查找
- 在代码执行之前,先执行预解析规则
- 如果要调用函数,函数内部也要先进行预解析
- 如果要给变量赋值之前,一定要先找到变量
变量的查找规则
1 先在自己的作用域里面找,如果没有就顺着作用域链往上找,找到则返回,找不到则一直找到全局为止 2 如果要直接赋值的话,找到全局也没有,那么浏览器会帮我们自动创建一个出来 3 如果只是访问的话,找到全局都没有就报错 xxx is not defined
以上是关于javaScript教程50: 变量查找规则与词法作用域的主要内容,如果未能解决你的问题,请参考以下文章
你不知道的JavaScript上卷 - 读书笔记 - 第2章词法作用域-2.2 欺骗词法