0

我试图以一百万种方式重写它,但无法弄清楚 Tony Alicea 如何从这段代码中产生结果 1, 2, undefined, 1:

function b() {
    var myVar;
    console.log(myVar);
}

function a() {
    myVar = 2;
    console.log(myVar)
    b();
}

var myVar = 1;
console.log(myVar);
a();
console.log(myVar);

您可以在https://www.youtube.com/watch?v=Bv_5Zv5c-Ts&t=74m30s看到代码和视频,他执行此操作并生成 1、2、未定义、1。我继续运行它并获得 1, 2,未定义,2。我正在做的事情是否导致 myVar 在全局范围和 a() 的范围内都以 2 的形式存在?我的代码目前发布在https://testing-mdmitchellnyc.c9.io/hello-world.html

4

1 回答 1

6

function a()应该

function a() {
    var myVar = 2;
    console.log(myVar)
    b();
} 

您现在拥有它的方式function a()是覆盖全局myVar而不是创建自己的范围myVar

于 2015-06-24T19:32:52.097 回答