Javascript:了解奇怪的部分 - 功能范围不能像所描述的那样工作

Tha*_*ike 0 javascript scope executioncontext

我试图重写这百万种方法,无法弄清楚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);
Run Code Online (Sandbox Code Playgroud)

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

Cra*_*ack 6

function a() 应该

function a() {
    var myVar = 2;
    console.log(myVar)
    b();
} 
Run Code Online (Sandbox Code Playgroud)

你现在的方式function a()是覆盖全局myVar而不是创建自己的作用域myVar