你不知道的JS系列学习笔记<一>---作用域

本文解释了作用域的概念及其在代码执行过程中如何确定变量的位置。通过实例说明了作用域的嵌套机制,并讨论了在不同作用域下查找变量的过程。此外,还介绍了在查找失败时可能出现的异常。

什么是作用域

作用域是一整套规则,用于确定在哪以及如何查找变量.

理解代码执行过程

举个例子 var a = 2,编译器会把代码分为两步:

  1. var a 查找作用域是否存在该名称的变量,如果没有,声明一个新的
  2. a = 2 引擎执行LHS查询,找到变量的容器本身,以便进行赋值,与之相对应的是RHS查找,可以理解为 retrieve his source value(取到他的原值)
作用域嵌套

当一个块或者一个函数嵌套在另一个块或者函数中时,就发生了作用域的嵌套.

function foo(){
    return a
}
var a = 1;
foo()
复制代码

当在函数作用域中无法找到变量a时,引擎就会去上级作用域查找,直到抵达最外层(即全局作用域)

异常

失败的RHS查找会抛出ReferenceError异常,失败的LHS查找会导致自动隐式创建一个全局变量(非严格模式),或者抛出ReferenceError异常(严格模式)

转载于:https://juejin.im/post/5a7a79136fb9a063461fdfd0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值