我知道这个问题标题看起来很可怕,但事实并非如此。遗憾!
好的,那么,创建一次性/不可更改的“变量”有什么意义呢?
假设我在Person对象中有一个名为“name”的属性。
const Person = {
name: 'Luis Felipe Zaguini'
};
好的。因此,看到人们这样做非常普遍:
let personName = Person.name;
console.log(`I've written my name, and it is ${personName}.`);
就是这样。在大多数情况下,变量只使用一次。或者,有时,它在其他语句中被引用,但是你知道,它没用,因为有一种方法可以在不设置新变量的情况下引用它。
技术上,你浪费CPU内存,为无用的东西分配内存,因为你实际上可以多次输入Person.name
,并且这样做:
console.log(`I've written my name, and it is ${Person.name}.`);
此外,您正在浪费时间并在代码中添加更多行。我是否过度了?很多程序员都是这样做的,但就个人来说,它似乎并不适合我。
答案 0 :(得分:7)
有多种原因
A' const`变量将阻止值意外更改,例如如果你写了一个closure,其中包含一个可以在直接范围之外访问的变量。
Javascript引擎还不具备common subexpression elimination,这是一种非常常见的编译器优化。使用临时变量可以提高性能,例如this example。
有时,名称不同的变量可以澄清功能;见Writing Really Obvious Code (ROC)。示例:
var activeUsername = User.name; //It's not just a user's name, it's the active user's name!
有时,额外的变量可以更容易地调试/监视变量
有时您希望在分配期间设置单独的断点
我是否过度了?
是
答案 1 :(得分:0)
这种方法很可能旨在缓存一个值以防止必须进行查找。虽然它通常不是问题,但使用点表示法或索引数组值会产生一点点开销。
开发人员可能选择这样做来澄清部分代码。
最后,开发人员可能只是草率。
在所有情况下,可能的好处或副作用都取决于您使用的JavaScript引擎以及它所执行的优化类型。
答案 2 :(得分:0)
我想我得到了你的问题。该值存储在变量中而不是直接使用,因为它可以防止多次往返数据库,或者在多次使用时解决表达式所节省的时间。例如。在你的情况下,如果你的代码中有多个引用而不是每次解析Person.name,编译器更愿意从变量中读取Person.name。
答案 3 :(得分:-1)
我个人不这样做。但正如你所问,这就是我的想法。
const Person = {
name: 'Luis Felipe Zaguini'
};
const personName = Person.name;
personName = personName + " rick"; //As in they want to make some changes to the name but they don't want to change the main object i.e Person
console.log(`I've written my name, and it is ${personName}.`);
我个人更喜欢这样做。 在这里,如果要更改名称,则必须直接更改主对象。这有点冒险,因为你可能在代码中的其他地方使用它。
const Person = {
name: 'Luis Felipe Zaguini'
};
console.log(`I've written my name, and it is ${Person.name}.`);
答案 4 :(得分:-1)
朋友,在这里你会在对象属性和变量之间混淆。例如,name =" foo"没有意义,可以直接使用。但是Person.name =" foo"表示具有name属性值的Person为foo.C#是关于对象的,并且内存总是可以在finally代码块中释放。希望我很清楚:)