2017-02-11 4 views
0

Я знаю, что этот вопрос выглядит страшно, но это не так. Сожалею!Почему люди используют переменные в некоторых случаях?

Итак, в чем смысл создания одноразовой/неизменной «переменной»?

Допустим, у меня есть одно свойство, называемое «имя» в объекте Person.

const Person = { 
    name: 'Luis Felipe Zaguini' 
}; 

Хорошо. Таким образом, невероятно часто встречаются люди, которые это делают:

let personName = Person.name; 
console.log(`I've written my name, and it is ${personName}.`); 

И все. В большинстве случаев эта переменная используется только один раз. Или иногда это ссылается на другие утверждения, но вы знаете, это бесполезно, потому что есть способ ссылаться на него, не устанавливая новую переменную.

Tecnically, вы тратите память процессора, распределение памяти что-то бесполезное, потому что вы можете, на самом деле, тип Person.name несколько раз, и сделать это:

console.log(`I've written my name, and it is ${Person.name}.`); 

Кроме того, вы тратите время и добавления больше строк к вашему коду. Я преувеличиваю? Многие программисты делают такие вещи, но лично мне это кажется не очень хорошо.

+2

Я вижу, откуда вы родом, но я решил с правилом, что читаемость до оптимизации. В системе сборки JavaScript (или на других языках) вы можете вместо этого полагаться на оснастку, чтобы минимизировать/оптимизировать ваш код этими незначительными способами. Кроме того, использование 'const' говорит читателю, что переменная не будет изменена. –

+0

На самом деле, я могу переназначить Person.name, и она будет отражать на personName, но, ради вопроса, я изменился, чтобы позволить. Я получил вашу сторону, читаемость - это большое дело, особенно при отладке. –

ответ

7

Есть любое количество причин const` переменной

  1. A»предотвратит значение случайного изменения, например, если вы написали 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. Иногда вы хотите установить отдельную точку останова в процессе выполнения задания

Am I overracting ?

Да.

0

Я лично этого не делаю. Но, как вы спросили, это то, что я думаю.

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}.`); 
+1

Вы не можете изменить ссылку константы, но вы можете изменить ее свойства. Поэтому, если вы объявляете 'const Person = {name: 'Luis'};', вы не можете переназначить его и сказать 'Person = {name: 'Rick'}'. Однако вы можете изменить свойства. 'Person.name = 'Rick'' действителен. –

0

Такой подход, скорее всего, предназначен для кэширования значения, чтобы избежать необходимости выполнять поиск. Хотя это вообще не проблема, использование точечной нотации или индексация значения массива несут крошечный бит служебных данных.

Возможно, разработчик решил сделать это, чтобы прояснить часть своего кода.

Наконец, разработчик может просто неаккуратно.

Во всех случаях все возможные преимущества или побочные эффекты зависят от того, какой механизм JavaScript вы используете и какие виды оптимизации он делает.

0

друг, здесь вы смешиваете себя между свойством объекта и переменной. Например, name = "foo" не имеет значения и может использоваться напрямую. но Person.name = "foo" означает лицо, имеющее значение свойства name, поскольку foo.C# - все об объектах, и память всегда может быть выпущена в конце кода. Надеюсь, я понятен :)

+1

Я думаю, вам нужно перечитать вопрос, и что это связано с C#? OP не путает себя между свойствами объекта и нормальными переменными. –

0

Наверно, у меня есть ваш вопрос. Значение хранится в переменной вместо использования напрямую, потому что оно предотвращает множественные обратные вызовы в базу данных или экономит время, затрачиваемое на разрешение выражения, если оно используется несколько раз. например. в вашем случае компилятор предпочтет прочитать Person.name из переменной, если в вашем коде больше, чем один refrences, вместо того, чтобы каждый раз решать Person.name.

Смежные вопросы