Javascript:理解奇怪的部分-函数范围不按描述工作

Javascript:理解奇怪的部分-函数范围不按描述工作,javascript,scope,executioncontext,Javascript,Scope,Executioncontext,我尝试过无数次重写这段代码,但不知道Tony Alicea如何从这段代码中生成结果1,2,未定义,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); 你可以看到代码和视频,在那里他

我尝试过无数次重写这段代码,但不知道Tony Alicea如何从这段代码中生成结果1,2,未定义,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);
你可以看到代码和视频,在那里他执行这个,并产生1,2,未定义,1。我一直运行它,得到1,2,未定义,2。我正在做的事情是否会导致myVar在全局范围和a()范围内都以2的形式存在?我的代码目前发布在

函数a()
应该是

function a() {
    var myVar = 2;
    console.log(myVar)
    b();
} 
您现在使用的方法是覆盖全局
myVar
,而不是创建自己的作用域
myVar

函数a()

function a() {
    var myVar = 2;
    console.log(myVar)
    b();
} 
您现在使用的方法是覆盖全局
myVar
,而不是创建自己的作用域
myVar