Javascript 有人能解释一下为什么下面的递增不是添加a+;1.

Javascript 有人能解释一下为什么下面的递增不是添加a+;1.,javascript,Javascript,有人能帮我解释一下为什么会这样吗 设一=1; 函数chg(arg){ return arg++/-->这不应该类似于arg+arg吗?但是它的输出是1 } 控制台日志(一个); 控制台日志(chg(一个))请尝试下面的代码。您需要使用预增量而不是后增量 设一=1; 函数chg(arg){ return++arg/-->这不应该类似于arg+arg吗?但它输出的是1 } 控制台日志(一个); 控制台日志(chg(一个))x++是增量后表达式,即其值为x,返回该值后,变量将递增1 ++x是预增量

有人能帮我解释一下为什么会这样吗

设一=1;
函数chg(arg){
return arg++/-->这不应该类似于arg+arg吗?但是它的输出是1
}
控制台日志(一个);

控制台日志(chg(一个))请尝试下面的代码。您需要使用预增量而不是后增量

设一=1;
函数chg(arg){
return++arg/-->这不应该类似于arg+arg吗?但它输出的是1
}
控制台日志(一个);

控制台日志(chg(一个))
x++
是增量后表达式,即其值为
x
,返回该值后,变量将递增1

++x
是预增量表达式,即
x
首先递增1,然后返回

在这里您需要
++x
,或者因为这是一个函数参数,所以请更清楚地使用
x+1
++
修改将不会产生任何效果。

刚刚编辑了您的代码:

let one = 1;

function chg(arg) {
  return ++arg; 
}

console.log(one);
console.log(chg(one));
或者也可以是这样

let one = 1;

function chg(arg) {
  return arg;
}

console.log(one);
console.log(chg(++one));

如果
1
1
。然后
one++
变成
1
one
变成
2
。你要找的是
++one
。如果你使用
返回++args,它就会工作。请看,原语值是作为值而不是引用提交的。这是否回答了您的问题?这段代码中有两个问题。另一个答案中说明了第一个具有后增量的ist。但是数据类型编号还有另一个问题。它是一个基本类型,您将它传递给一个函数,该函数实际上将值
one
复制到
arg
arg
在返回后递增,但立即被遗忘
one=chg(one)
将结合
return++arg
改变你的值最后一句话很关键,因为我已经可以预见“为什么不
chg(one);chg(one);
继续增加?”的后续结果。这和“one”+1将返回“one1”不是一回事,而“one”++将返回南索它的意思是,在前面放一个++返回我存储1的内存,然后在它的位置添加一个1?还有,如果我把它放在一个函数中,为什么会不同呢。如果我改为如下所示,它会适当地增加<代码>设一=1;一个++函数chg(arg){return++arg/-->这不应该类似于arg+arg吗?但是它输出1}console.log(one);控制台日志(chg(一个))此处变量arg不按引用移位,只按值移位。抱歉,请稍等片刻,让我编辑一下
let one = 1;

function chg(arg) {
  return arg+1 // This is more readable code
}

console.log(one);
console.log(chg(one));