input() 函数执行上下文是否在 check() 函数执行上下文中



我的问题是关于此代码中的执行上下文:当使用控制台调用函数 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

最新更新