函数在使用全局变量时表现不同


let outsideVariable = 5;
function myFunctionTests(){
let checkBox = document.getElementById("checkTests");
let variableName = 10;
if (checkBox.checked == true){
variableName += 1;
outsideVariable += 1;
console.log('variableName is: ',variableName);
console.log('outsideVariable is: ',outsideVariable);
} else {
variableName -= 1;
outsideVariable -= 1;
console.log('variableName is: ',variableName);
console.log('outsideVariable is: ',outsideVariable);
}
}

当我运行此代码并勾选复选框时,两个变量("variableName"one_answers"outsideVariable"(都会增加1(输出为11和6(。到目前为止还不错。

现在,当我取消选中复选框时;variableName";下降1(基于10的初始值,因此如预期的那样下降到9(,但是";outside变量";回到5而不是4。

使";outside变量";转到4是更改

outside变量-=1;

outside变量-=2;

发生这种情况有什么特殊原因吗?我正在学习JavaScript,所以要考虑到这一点。

如果取消选中复选框,variableName=10和outsideVariable=5,但它们等于9和4,对吗?对于这个问题,您应该在范围外定义variableName,如全局范围!。

最新更新