- // 代码部分
- function foo(a) {
- console.log( a ); //2
- }
- foo( 2 );
让我们把上面这段代码的处理过程想象成一段对话, 这段对话可能是下面这样的.
引擎: 我说作用域, 我需要为 foo 进行 RHS 引用. 你见过它吗?
作用域: 别说, 我还真见过, 编译器那小子刚刚声明了它. 它是一个函数, 给你.
引擎: 哥们太够意思了! 好吧, 我来执行一下 foo.
引擎: 作用域, 还有个事儿. 我需要为 a 进行 LHS 引用, 这个你见过吗?
作用域: 这个也见过, 编译器最近把它声名为 foo 的一个形式参数了, 拿去吧.
引擎: 大恩不言谢, 你总是这么棒. 现在我要把 2 赋值给 a.
引擎: 哥们, 不好意思又来打扰你. 我要为 console 进行 RHS 引用, 你见过它吗?
作用域: 咱俩谁跟谁啊, 再说我就是干这个. 这个我也有, console 是个内置对象. 给你.
引擎: 么么哒. 我得看看这里面是不是有 log(..). 太好了, 找到了, 是一个函数.
引擎: 哥们, 能帮我再找一下对 a 的 RHS 引用吗? 虽然我记得它, 但想再确认一次.
作用域: 放心吧, 这个变量没有变动过, 拿走, 不谢.
引擎: 真棒. 我来把 a 的值, 也就是 2, 传递进 log(..).
-------《你不知道的 JavaScript 上卷》
来源: https://www.cnblogs.com/hexiaobao/p/11014977.html