JavaScript范围和提升:代码按预期返回1而不是10

cuo*_*gle 1 javascript

我是JavaScript的新手,我真的不太明白为什么下面的代码返回1而不是10:

var a = 1;
function b() {
    a = 10;
    return;
    function a() {}
}
b();
alert(a);
Run Code Online (Sandbox Code Playgroud)

运行代码:http://jsfiddle.net/smMtU/

如果我撤消该行function a() {},它将10按预期返回.这段代码来自这篇文章,解释了JavaScript中的概念范围和提升.也许我在阅读这篇文章时遗漏了一些东西?

请有人指出这段代码背后的概念吗?

Den*_*ret 7

由于吊装,您的代码相当于

var a = 1;
function b() {
    var a = function() {};
    a = 10;
}
b();
alert(a);
Run Code Online (Sandbox Code Playgroud)

在里面b你不是改变外部a而是内部改变.