Ответ 1
Мне кажется неправильным установить инструкцию if/else только для использования части else...
Просто отрицайте свое состояние, и вы получите логику else
внутри if
:
if (!(id in tutorTimes)) { ... }
Есть ли в JavaScript какой-либо оператор "не в", чтобы проверить, не существует ли свойство в объекте? Я не мог найти что-нибудь об этом вокруг Google или Qaru. Вот небольшой фрагмент кода, над которым я работаю, где мне нужны такие функции:
var tutorTimes = {};
$(checked).each(function(idx){
id = $(this).attr('class');
if(id in tutorTimes){}
else{
//Rest of my logic will go here
}
});
Как вы можете видеть, я бы помещал все в оператор else
. Мне кажется неправильным устанавливать оператор if
- else
только для использования части else
.
Мне кажется неправильным установить инструкцию if/else только для использования части else...
Просто отрицайте свое состояние, и вы получите логику else
внутри if
:
if (!(id in tutorTimes)) { ... }
Как уже сказал Jordão, просто отрицайте это:
if (!(id in tutorTimes)) { ... }
Примечание. Вышеуказанный тест, если tutorTimes имеет свойство с именем, указанным в id, в любом месте цепи прототипа. Например, значение "valueOf" in tutorTimes
возвращает true, потому что оно определено в Object.prototype.
Если вы хотите проверить, нет ли свойства в текущем объекте, используйте hasOwnProperty:
if (!tutorTimes.hasOwnProperty(id)) { ... }
Или, если у вас есть ключ, который hasOwnPropery, вы можете использовать это:
if (!Object.prototype.hasOwnProperty.call(tutorTimes,id)) { ... }
Две быстрых возможности:
if(!('foo' in myObj)) { ... }
или
if(myObj['foo'] === undefined) { ... }
Лично я нахожу
if (id in tutorTimes === false) { ... }
легче читать, чем
if (!(id in tutorTimes)) { ... }
но оба будут работать.