为什么更改函​​数返回值将更改函数console.log的结果?

时间:2019-05-03 20:13:34

标签: javascript

如果我输入代码return amountconsole.log(amount),它将是1250,但是如果我输入return balanceconsole.log(amount),它将是9250!为什么如此不同,我不明白。你能给我解释一下吗?

//Declare variable;

var balance = 10500; // a global variable

var amount = steal(balance, 1250); // a global variable

//Function;

function steal(balance, amount) {

    if (amount < balance) {

        balance = balance - amount;

    }

    return amount;

}

console.log(amount); // it will be 1250, cause parameter amount = 1250 

,如果是return balance,则console.log(amount) = 9250

2 个答案:

答案 0 :(得分:0)

您的log语句记录在顶部声明的变量:

var amount = steal(balance, 1250);

由于您将其设置为返回值steal,因此它会根据返回值更改内容,这不会让您感到惊讶。


函数创建一个新的变量作用域,并且参数在该作用域中。参数amount不会在外部范围内更改变量amount

function steal(balance, amount) {
  // amount is a new variable unrelated to the amount from above
}

如果不是这种情况,则可能难以调试错误。

答案 1 :(得分:0)

因为返回金额时,窃取函数的值位于金额变量上,等于1250,而返回余额时,余额的值(余额-金额= 9250)位于金额变量上

var amount = steal(balance, 1250); // if return amount result will be 1250
var amount = steal(balance, 1250); // if return balance result will be 9250

窃取功能的收益取决于金额变量!!! 这很容易!!!