我只想弄清楚执行上下文工作流程的简单解释。
- 代码
var a=10;
function sample(){
var y = 10;
};
-
环境对象(词汇和变量)有环境记录和
外部属性。任何人都可以通过解释的差异来帮助
在这种情况下的环境对象。
创建阶段扫描代码变量被提升为全局 上下文。
它扫描代码中的函数并找到样本函数。怎么了 什么时候找到一个功能?现在是否设置了[[scope]]属性?将会 如果有人能够对[[范围]]属性做出明确解释
启动全局执行上下文的执行阶段。
请注意:当有可能存在函数表达式或尝试catch子句等时,我会理解解释和行为会发生变化。在这种情况下,已经读过变量环境。我只是在寻找上述功能的工作流程。甚至函数的参数都会创建一个参数属性。这也可以忽略不计。基于上面的示例代码,只是对词法,变量环境和[[scope]]属性的一个非常简单的解释。这家酒店也有。在这种情况下,我认为它只是全局对象 - 两种情境的窗口。让我们忽略这一点,以保持简单:)。在理解之后,我可能会为此创建一个单独的问题:)。
希望有人能帮助我理解这个基本概念。寻找基于ES5的解释。感谢您的帮助。
MIA
答案 0 :(得分:0)
当你在代码中使用var时,Javascript会进行变量提升。
var a=10;
function sample(){
var y = 10;
};
因此编译器会将您的上述代码翻译成以下代码。变量将被提升到其范围的顶部。
var a=undefined;
a=10;
function sample(){
var y=undefined; // this is because var is function scoped in javascript
y=10;
};
还要说你有以下代码。
var a=10;
if(true){
var b=20;
}
上述代码将由编译器翻译为 -
var a=undefined;
var b=undefined;
a=10;
if(true){
b=20;
}