我的问题是关于这段代码中的执行上下文:当使用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)时得到的结果是正确的,这是正确的。问题仅是关于上下文的问题。
答案 0 :(得分:1)
这不是“内部”。执行上下文是一个在堆栈之上的一个上下文。
您在底部有“全局执行上下文”。当您调用check()
时,其执行上下文将推入堆栈顶部。
check()
-------
Global
在check
内部调用input()
时,新的执行上下文将再次推到顶部:
input()
-------
check()
-------
Global
当input
返回一个值时,其上下文将从数组中弹出,并继续执行check
。当check
返回时,其上下文也会弹出。
两个函数都可以通过作用域链访问变量x
和y
。