(function a(){
a=20;
b=a
console.log(b);
})();
输出是[Function: a]
(function a(){
a=20;
b=a
console.log(b);
})();
输出是[Function: a]
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
a=2
并没有声明一个局部变量,声明局部变量需要用var
,let
,const
。a
在函数内确实存在,就是函数本身,并且是 immutable 的,即不可更改。所以a=20;
实际是无效的,在严格模式下会出错。b=a
这里a
还是函数本身,赋值后(全局的)b
也是这个函数。所以有你看到的结果。