Redeclare JavaScript Variable

前端 未结 3 511
一生所求
一生所求 2020-12-17 00:05

In the following code:

var greeting = \"hi\";

function changeGreeting() {
    if (greeting == \"hi\") {
        var greeting = \"hello\";
    }

    alert(g         


        
3条回答
  •  遥遥无期
    2020-12-17 00:53

    JavaScript variables have function scope. Thus, the very presence of var greeting inside the function will declare a local greeting variable, which will be undefined at the time of its mention in if condition: the global variable will not be visible inside the function, being overshadowed by the local one. Therefore, the if does not happen, the assignment to hello doesn't happen, the variable is still undefined.

    In the second example, you're using the global variable throughout, it is not overshadowed by a local variable (because, no var greeting inside the function), and things work as you expect.

提交回复
热议问题