Есть ли подводные камни, чтобы изменить что-то = что-то ||{} - PullRequest
4 голосов
/ 18 ноября 2011

Я наткнулся на этот ответ , где автор предложил краткую запись для

if(typeof MyNamespace === 'undefined'){
    var MyNamespace = {};
}

есть

var MyNamespace = MyNamespace || {};

Будут ли ветераны-программисты рекомендовать последним упростить код или это чрезмерно усложнит такие вещи, как злоупотребление ++ или -- в сложных составных выражениях?


РЕДАКТИРОВАТЬ Причина, по которой я спрашивал это, потому что некоторое время назад кто-то вдохновил меня, указав, что многие люди, считающие себя опытными программистами, допускают множество ошибок новичков. Дело в то время было

if (isReady){
  //Do Something
}

И он говорил, что условие должно что-то значить, isReady ничего не значит, вместо этого мы должны использовать

if (isReady === true){
  //Do Something
}

Ответы [ 2 ]

4 голосов
/ 18 ноября 2011

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

Это не только переопределит значение, если оно не определено, но также и когда оноis false, 0, NaN, null или "".

В некоторых старых браузерах с ошибками, оно перекрывало старое объявление переменной независимо от того, было ли это истинным значением или нетесли это объявление переменной было в другом элементе <script>.Извините, я не помню, что с моей головы.

2 голосов
/ 18 ноября 2011

var MyNamespace = MyNamespace || {};

в порядке.Это действительно выбор стиля.Я предпочитаю ||.

Обычно MyNamespace выдает ошибку ссылки, поскольку она не существует, но работает в операторе var.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...