a=2 并没有声明一个局部变量,声明局部变量需要用 var, let, const。a 在函数内确实存在,就是函数本身,并且是 immutable 的,即不可更改。所以 a=20; 实际是无效的,在严格模式下会出错。b=a 这里 a 还是函数本身,赋值后(全局的)b 也是这个函数。所以有你看到的结果。
a=2
并没有声明一个局部变量,声明局部变量需要用var
,let
,const
。a
在函数内确实存在,就是函数本身,并且是 immutable 的,即不可更改。所以a=20;
实际是无效的,在严格模式下会出错。b=a
这里a
还是函数本身,赋值后(全局的)b
也是这个函数。所以有你看到的结果。