如果我输入代码return amount
和console.log(amount)
,它将是1250,但是如果我输入return balance
和console.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
答案 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
窃取功能的收益取决于金额变量!!! 这很容易!!!