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

时间:2019-01-12 01:42:06

标签: javascript

我的问题是关于这段代码中的执行上下文:当使用console.log调用check()函数时,input()函数执行上下文将位于check()函数执行上下文之内还是之外。 / p>

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)时得到的结果是正确的,这是正确的。问题仅是关于上下文的问题。

1 个答案:

答案 0 :(得分:1)

这不是“内部”。执行上下文是一个在堆栈之上的一个上下文。

您在底部有“全局执行上下文”。当您调用check()时,其执行上下文将推入堆栈顶部。

check()
-------
Global

check内部调用input()时,新的执行上下文将再次推到顶部:

input()
-------
check()
-------
Global

input返回一个值时,其上下文将从数组中弹出,并继续执行check。当check返回时,其上下文也会弹出。

两个函数都可以通过作用域链访问变量xy