JavaScript 作用域和提升 : code returns 1 instead of 10 as expected

标签 javascript

<分区>

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

var a = 1;
function b() {
    a = 10;
    return;
    function a() {}
}
b();
alert(a);

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

如果我删除 function a() {} 行,它会按预期返回 10。此代码来自 this post解释 JavaScript 中的作用域和提升概念。也许我在阅读这篇文章时遗漏了什么?

谁能指出这段代码背后的概念?

最佳答案

由于提升,你的代码等同于

var a = 1;
function b() {
    var a = function() {};
    a = 10;
}
b();
alert(a);

内部b你没有改变外部 a但是一个内部的。

关于JavaScript 作用域和提升 : code returns 1 instead of 10 as expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16021007/

相关文章:

javascript - 未捕获的语法错误 : Unexpected token o

javascript - Joomla 在鼠标悬停时显示子菜单

javascript - 为什么 Worker 没有在 js 中定义

javascript - 如何使用 Material UI 在滚动时使 AppBar 和表格的标题粘在同一页面上(因此彼此堆叠)

javascript - Joomla Ajax jQuery

javascript - 如何通过 handlebar.js 创建度数符号?

javascript - React-native Redux socket.io session 认证

javascript - 如何从属性中获取数据然后相应地禁用按钮

javascript - 为什么 script 标签的 document.write 有时间延迟?为什么脚本标签执行延迟?

javascript - 如何禁用点击但仍允许在 iframe 中滚动?