我的问题是关于此代码中的执行上下文:当使用控制台调用函数 check() 时.log input() 函数执行上下文是在 check() 函数执行上下文内部还是外部。
var x;
var y;
function check(){
y = input()
if(y<10){
return "true";
}
else{
return false;
}
}
function input(){
x = eval(prompt("please enter a number "));
return x;
}
console.log(check());
我试图在函数外部进行变量减速,并在函数内分配它们。
当我将输入添加为 (9) 时我得到的结果我得到了 true,这是正确的。问题仅与上下文有关。
它不是"内部"。执行上下文在堆栈上一个位于另一个之上。
底部有全局执行上下文。当您调用 check()
时,它的执行上下文被推送到堆栈顶部。
check()
-------
Global
在check
中调用 input()
时,新的执行上下文将再次被推到顶部:
input()
-------
check()
-------
Global
当 input
返回一个值时,其上下文将从数组中弹出,并恢复执行check
。当check
返回时,其上下文也会弹出。
这两个函数都可以访问变量x
,并通过作用域链y
。