为什么人们在某些情况下使用变量?
Why do people use variables in some cases?
我知道这个问题的标题看起来很可怕,但事实并非如此。抱歉!
好的,那么,创建 one-time-only/unchangeable "variable" 有什么意义?
假设我有一个 属性 在一个人 object 中称为 "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}.`);
此外,您在浪费时间并向代码中添加更多行。我是不是反应过度了?很多程序员都在做这种事情,但就我个人而言,它似乎不太适合我。
我个人不这样做。但正如你所问,这就是我的想法。
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}.`);
原因有很多
“const”变量将防止值意外更改,例如如果您编写的 closure 包含一个可在直接作用域外访问的变量。
Javascript 引擎还不能 common subexpression elimination, which is a very common compiler optimization. Using a temporary variable could improve performance, like in 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!
有时,额外的变量使得debug/watch变量更容易
有时你想在赋值过程中设置一个单独的断点
Am I overracting?
是的。
这种方法很可能是为了缓存一个值以防止必须进行查找。虽然这通常不是问题,但使用点符号或索引数组值确实会产生一点点开销。
开发人员可能选择这样做是为了阐明他们的部分代码。
最后,开发者可能马虎了。
在所有情况下,可能的好处或副作用都取决于您使用的 JavaScript 引擎以及它进行的优化类型。
朋友,您在这里混淆了对象 属性 和变量。例如,name="foo"没有意义,可以直接使用。但是 Person.name="foo" 表示一个名字为 属性 的人,因为 foo.C# 是关于对象的,内存总是可以在 finally 代码块中释放。希望我清楚:)
我想我明白你的问题了。该值存储在变量中而不是直接使用是因为它可以防止多次往返数据库或者它可以节省解析表达式所消耗的时间,以防它被多次使用。例如。在您的情况下,如果您的代码中存在多个引用,编译器更愿意从变量中读取 Person.name,而不是每次都解析 Person.name。
我知道这个问题的标题看起来很可怕,但事实并非如此。抱歉!
好的,那么,创建 one-time-only/unchangeable "variable" 有什么意义?
假设我有一个 属性 在一个人 object 中称为 "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}.`);
此外,您在浪费时间并向代码中添加更多行。我是不是反应过度了?很多程序员都在做这种事情,但就我个人而言,它似乎不太适合我。
我个人不这样做。但正如你所问,这就是我的想法。
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}.`);
原因有很多
“const”变量将防止值意外更改,例如如果您编写的 closure 包含一个可在直接作用域外访问的变量。
Javascript 引擎还不能 common subexpression elimination, which is a very common compiler optimization. Using a temporary variable could improve performance, like in 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!
有时,额外的变量使得debug/watch变量更容易
有时你想在赋值过程中设置一个单独的断点
Am I overracting?
是的。
这种方法很可能是为了缓存一个值以防止必须进行查找。虽然这通常不是问题,但使用点符号或索引数组值确实会产生一点点开销。
开发人员可能选择这样做是为了阐明他们的部分代码。
最后,开发者可能马虎了。
在所有情况下,可能的好处或副作用都取决于您使用的 JavaScript 引擎以及它进行的优化类型。
朋友,您在这里混淆了对象 属性 和变量。例如,name="foo"没有意义,可以直接使用。但是 Person.name="foo" 表示一个名字为 属性 的人,因为 foo.C# 是关于对象的,内存总是可以在 finally 代码块中释放。希望我清楚:)
我想我明白你的问题了。该值存储在变量中而不是直接使用是因为它可以防止多次往返数据库或者它可以节省解析表达式所消耗的时间,以防它被多次使用。例如。在您的情况下,如果您的代码中存在多个引用,编译器更愿意从变量中读取 Person.name,而不是每次都解析 Person.name。