首页 > 解决方案 > 由于 number 是原始类型,为什么在重新分配给另一个变量时会更改其值?

问题描述

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 的值。帮助我理解,谢谢

标签: javascriptstringnumbersprimitive

解决方案


该数字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;

要了解++详细信息,另请参阅JavaScript 中的 ++someVariable 与 someVariable++。对于初学者来说非常混乱,因此建议不要在作业中使用它。


推荐阅读