Javascript - 为什么我的示例提醒1而不是10?

时间:2017-10-07 12:42:11

标签: javascript

我的示例代码:

var foo = 1;
function bar() {
	foo = 10;
	return;
	function foo() {}
}
bar();
alert(foo);

为什么警报1?我期待10。 但是如果我在返回后注释掉函数foo(){},它会返回10。

1 个答案:

答案 0 :(得分:3)

其他函数中的函数声明被视为它们出现在contains函数的最开头。也就是说,您的bar()函数被视为如下所示:

function bar() {
    function foo() {}
    foo = 10;
    return;
}

因此foo是函数中的本地符号,对其的赋值不会影响全局foo