Javascript函数内的局部和全局变量

Igg*_*ggy 6 javascript variables

我正在学习JS全局变量和局部变量,但我对这个特定函数感到困惑.

var text = "top";
function print() {
    return (text);
}
print();
//returns 'top'
Run Code Online (Sandbox Code Playgroud)

我明白为什么它会返回顶部.var text是一个全局变量.print()函数可以访问它并返回text,从而返回'top'.

var text = "top";
function print() {
    return (text);
    var text = "bottom";
}
print();
// returns undefined
Run Code Online (Sandbox Code Playgroud)

我有全局和局部变量的基本知识(或者我认为).我知道该函数print可以访问自己的本地加全局变量.

我不明白为什么会这样undefined.根据我的理解,该行return text;检索text它可以访问的全局变量(如第一个代码块所示).返回后text = 'top',它还声明了自己的局部变量,其名称相同但值不同'bottom'.据bottom我所知,局部变量应该坐在那里,因为之前没有调用它.

为什么它没有显示top(甚至是节目bottom)而是显示undefined

Kev*_*n L 6

Javascript提升您的变量声明,以便您的代码在功能上如下:

var text = "top";
function print() {
    var text;
    return (text);
    // unreachable code below
    text = "bottom";
}
print();
// returns undefined
Run Code Online (Sandbox Code Playgroud)

由于text在您的函数中声明的内容尚未定义,当您点击return(text)并且text="bottom"无法访问时,print()将返回undefined

有关详细信息,请参阅Javascript中的变量范围.这个问题涉及案例7.