【你不知道的JavaScript上卷】读书笔记

编译器有话说之变量查找(LHS、RHS)

    编译器在编译过程中生成了代码,引擎执行它时,会通过查找变量名来判断它是否声明过。查找的方式有LHS以及RHS类型,“L”、“R”代表左侧以及右侧,当变量出现在赋值操作的左侧时会进行LHS查询,出现在右侧时会进行RHS查询,讲得准确一点,RHS查询与简单地查找某个变量别无二致,而LHS查询则是试图找到变量的容器本身。以下程序,其中既有LHS又有RHS引用:
function foo(a){
    console.log(a);   //2
}
foo(2);

    最后一行foo(...)函数的调用需要会foo进行RHS引用,意味着“去找到foo的值,并把它给我”。而且(...)意味着foo的值需要被执行,因此它最好是一个函数类型的值!当2被当作参数传递给foo(...)函数时,2会被分配给参数a。为了给a(隐式)分配值,需要进行一次LHS查询

猜你喜欢

转载自blog.csdn.net/yuhui01/article/details/80841536