如果将 JavaScript 变量作为函数调用,那么其工作过程是怎样的?
let a=5;
function show(){
a=10;
function a(){};
return a;
}
let res=show();
console.log(a,res); //output:5 10
谁能解释一下为什么 a 显示为 5,函数 a(){} 是什么意思?
在 JavaScript 中,所有
function
声明都被提升到作用域的顶部。函数本身创建一个scope,所以在这种情况下,代码实际上被解释为:
let a=5;
function show(){
function a(){};
a=10;
return a;
}
let res=show();
这意味着外部
a
参考永远不会改变。
一个相关的SO问题:函数声明的javascript范围