我刚刚阅读了一篇关于Ben Cherry的JavaScript范围和提升的精彩文章,其中他给出了以下示例:
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
alert(a);
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,浏览器将发出"1"警报.
我仍然不确定它为什么会返回"1".他说的一些事情就像是:所有的功能声明都被提升到顶部.您可以使用函数来调整变量的范围.仍然没有为我点击.
所以我正在玩JavaScript并遇到了我认为奇怪的事情.有人能够解释以下内容吗?(我已将警报值包含在评论中)
为什么foo()内的第一个警报(msg)返回undefined而不是外部?
var msg = 'outside';
function foo() {
alert(msg); // undefined
var msg = 'inside';
alert(msg); // inside
}
foo();
alert(msg); // outside
Run Code Online (Sandbox Code Playgroud)
考虑到这些都很好:
var msg = 'outside';
function foo() {
alert(msg); // outside
}
alert(msg); // outside
Run Code Online (Sandbox Code Playgroud)
和:
var msg = 'outside';
function foo() {
var msg = 'inside';
alert(msg); // inside
}
alert(msg); // outside
Run Code Online (Sandbox Code Playgroud)