javascript - input() 函数执行上下文是否位于 check() 函数执行上下文内?

标签 javascript

我的问题是关于此代码中的执行上下文:当使用 console.log 调用函数 check() 时,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 返回时,它的上下文也会弹出。

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

关于javascript - input() 函数执行上下文是否位于 check() 函数执行上下文内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54156086/

相关文章:

javascript - 创建一个元史诗,其工作方式类似于combineEpics,但根据 namespace 选择一个史诗

javascript - Canvas js 图表在 Bootstrap 3 布局中无法正确响应

javascript - Protractor 和 $http.post

php - 删除侧边栏商店页面 woocommerce

c# - 以编程方式点击网页

javascript - 列表项样式 |动态添加 |更新样式

javascript - ReactJS的高阶组件错误: "Unknown props"

javascript - 主干集合添加事件未触发

javascript - 使用 highcharts-ng 以编程方式缩小

javascript - 从数据库javascript获取数据