变量的查找有两种类型:LHS和RHS,LHS即赋值操作的目标是谁,RHS即谁是赋值操作的源头。若RHS查找失败会抛出ReferenceError异常,LHS失败会导致自动隐式地创建一个全局变量(非严格模式)。
考虑如下两段代码:
//-----------A------------
function foo(a)
{
console.log(a + b);
b = a;
}
foo(2);
//-----------B------------
function foo(a)
{
b = a;
console.log(a + b);
}
foo(2);
//-----------------------
以上两个小例子,大家可以在电脑上跑一下
A会出错,错误信息为:Uncaught ReferenceError: b is not defined。
而B能正确地打印出4。