2014-09-24 5 views
10

Если вы создаете ссылку на объект и ссылка не изменится (даже если объект будет), лучше ли использовать const вместо var?В javascript следует использовать const вместо var, когда это возможно?

Например:

const moment = require('moment') 

exports.getQuotation = function(value) { 

    const quotation = {}; 
    quotation.value = value; 
    quotation.expiryDate = moment().add(7, 'days'); 

    // Do some other stuff with quotation perhaps 

    return quotation; 

}; 
+0

Я бы не стал связываться с const, это ES6, он не будет увеличивать производительность вашего кода, но он сделает бит сложнее исправить и реорганизовать. Stick с var (всегда объявляйте переменные) – donnanicolas

+1

@donnanicolas ES6 'const'and' let' довольно много окончательных – fmsf

ответ

3

Если вы проверяете MDN, для его ссылки вы можете обнаружить, что его экспериментальную технологию, которая является частью ES6 предложения. Поддержка браузера ограничена.

Ссылка для const от MDN

Это экспериментальная технология, часть гармонии (ECMAScript 6) предложение. Поскольку эта технология не стабилизировалась, проверить таблицу совместимости для использования в различных браузерах. Также отметьте , что синтаксис и поведение экспериментальной технологии подчиняются для изменения в будущей версии браузеров по мере изменения спецификации.

Так что это вопрос, следует ли использовать везде. :)

Также, если вы хотите создать объекты в объектах, которые не должны быть изменены, вам необходимо установить Object.defineProperties() и использовать атрибут writable.

+0

Я не думаю, что это то, что имел в виду запросчик.Я думаю, что вопрос: «Если я в среде, поддерживающей' const' и 'let', какой я должен предпочесть? Он говорит «var», но я думаю, что вопрос скорее о 'let', который имеет ту же область блока. – Pipo

+0

@Pipo: Извините. Я получил это из вашего комментария. Но где это в вопросе? – mithunsatheesh

+0

Я думаю, что эта часть «Если вы создаете ссылку на объект, и ссылка не изменится (даже если объект будет), лучше ли использовать' const' вместо 'foo'?». Я изменил 'var' на' foo', чтобы было ясно, что я _think_ он не хочет реального сравнения с 'var' (или' let'), но, глядя на первую часть, я думаю, он хочет знать, если обычно полезно использовать 'const' для объектов, если их содержимое изменяется. – Pipo

1

const используется для переменной константы, то есть после объявления, это значение не должно изменяться, тогда как var может быть изменено в соответствии с желаемой.

Использование const и var исключительно по вашей воле. Для меня это звучит так

  • Если я 100% уверен, что значение переменной не изменится, и это не будет повторно объявлена, я определю его как константный.
  • Во всех остальных случаях я буду использовать var.

Имейте это в виду, повторное объявление const сразу же выведет ошибку.

4

Вы можете использовать сопзЬ, но вы должны запустить узел на --harmony

node app.js --harmony 

Вы также должны установить "use strict", в противном случае вы будете иметь проблемы исполнения во время выполнения:

exports.getQuotation = function(value) { 
    "use strict"; 

    const I_AM_CONSTANT = {}; 
    let quotation = {}; 
    ... 

Другое чем это, да, если вы используете узел на --harmony, семантически имеет смысл использовать const для констант. Для фактических переменных вы должны использовать let вместо var, так как let определяет только переменную в области (избегает проблем с подъемом)

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

  • Нет связанных вопросов^_^