为什么人们在某些情况下使用变量?

时间:2017-02-11 03:48:14

标签: javascript variables memory allocation

我知道这个问题标题看起来很可怕,但事实并非如此。遗憾!

好的,那么,创建一次性/不可更改的“变量”有什么意义呢?

假设我在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}.`);

此外,您正在浪费时间并在代码中添加更多行。我是否过度了?很多程序员都是这样做的,但就个人来说,它似乎并不适合我。

5 个答案:

答案 0 :(得分:7)

有多种原因

  1. A' const`变量将阻止值意外更改,例如如果你写了一个closure,其中包含一个可以在直接范围之外访问的变量。

  2. Javascript引擎还不具备common subexpression elimination,这是一种非常常见的编译器优化。使用临时变量可以提高性能,例如this example

  3. 有时,名称不同的变量可以澄清功能;见Writing Really Obvious Code (ROC)。示例:

    var activeUsername = User.name;  //It's not just a user's name, it's the active user's name!
    
  4. 有时,额外的变量可以更容易地调试/监视变量

  5. 有时您希望在分配期间设置单独的断点

  6.   

    我是否过度了?

答案 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代码块中释放。希望我很清楚:)