我的问题是关于此代码中的执行上下文:当使用 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
返回时,它的上下文也会弹出。
两个函数都可以通过作用域链访问变量x
和y
。
关于javascript - input() 函数执行上下文是否位于 check() 函数执行上下文内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54156086/