既然数字是原始类型,为什么它在重新分配给另一个变量时会改变它的值?

Since number is a primitive type, why is it changing its value when reassigned to another variable?

let age = 21;
let newAge = age++;
let newerAge = ++age;
let name = "basic";
let name2 = name.toUpperCase();
let name3 = name + "why";

console.log(age);
console.log(newAge);
console.log(newerAge);
console.log(age);
console.log(name);
console.log(name2);
console.log(name3);
console.log(name);

这里newAge和newerAge的变化改变了age的值。但是从。我的理解是,age(Number) 是一种原始类型,不应改变其值。然而,字符串按我预期的方式工作。 name2 和 name3 的变化没有影响 name 的值。 帮助我理解, 谢谢

数字21是原始值,但不会改变。

age 是一个变量,并且确实获得了由 ++ 运算符分配的新值。相当于写

let age = 21;
let newAge = age; age = age + 1;
let newerAge = (age = age + 1); // newerAge = (age += 1)

如果您不想改变 age 变量,请不要使用 ++ 运算符,而是编写例如

let age = 21;
let newAge = age + 1;
let newerAge = 1 + age;

要详细了解 ++ 的作用,另请参阅 ++someVariable vs. someVariable++ in JavaScript。对新手来说相当混乱,所以建议不要在作业中使用它。