Я использую это "!!" для сравнения с "undefined". Однако есть ли другой способ сделать это?Как можно избежать! сравнение в JavaScript?
isWidgetTemplatesLoaded: function(widgetName) {
return !!templates[widgetName];
}
Благодаря
Я использую это "!!" для сравнения с "undefined". Однако есть ли другой способ сделать это?Как можно избежать! сравнение в JavaScript?
isWidgetTemplatesLoaded: function(widgetName) {
return !!templates[widgetName];
}
Благодаря
Вы можете использовать typeof
оператор
typeof templates[widgetName];
еще вы можете также использовать как этот
if (templates[widgetName] === undefined) {
// rest of code
}
else {
// rest of code
}
Возможно, вы только что отредактировали свой первый ответ ... – RobG
Спасибо. Будет ли это иметь тот же эффект? –
Вы можете использовать TypeOf для проверки не определено:
(typeof templates[widgetName] !== 'undefined')
typeof всегда возвращает строку. Он возвращает «undefined», если значение переменной не определено или переменная не существует.
Для проверки undefined
вы можете просто использовать не-преобразования равных/различные операторы:
if (x !== undefined) { ... }
if (y === undefined) { ... }
к сведению, однако, что это не имеет тот же смысл !!
. Например, двойное отрицание возвращает true
даже для false
, null
, 0
или ""
, несмотря на то, что эти значения не являются undefined
.
Кстати в JavaScript, вы должны в основном всегда использование ===
и !==
вместо ==
и !=
, если вам действительно не нужны сумасшедший неявного преобразования, что равенство/разные операторы делают (и никто не нуждается в этом). Хорошие редакторы Javascript предупредит вас о любом использовании ==
или !=
, поскольку они просто скрывают ошибки.
В специфике вашего кода ставит под сомнение !!
логика кажется неправильным на философском уровне, потому что пустой шаблон может быть ""
и эта функция будет сказать, что шаблон не был загружен, а вместо этого он был загружен и просто случается пустую строку.
Возможно, это потому, что я пришел из Java-мира, но меня раздражает то, что это * !! * –
@stackman: на самом деле писать код типа 'x! == undefined' намного лучше (с единственной досадой, которая может кто-то ожидает, что вы будете лечить 'null' так же, как' undefined'). К сожалению, Javascript имеет как «null», так и «undefined», и нет тривиального способа проверить только для них обоих, потому что также '0', а пустая строка -« ложь ». – 6502
Вы можете использовать оператор in
, если знаете, если свойство существует с некоторым значением, кроме undefined
.
return widgetName in templates;
TYPEOF шаблоны [widgetName]! == "неопределенными" – Lain
'!!' преобразует значение 'шаблонов [widgetName]' в булево как будто 'булевых (шаблоны [widgetName])'. Как 'false == undefined' лучше прямого сравнения, чем в' templates [widgetName] == undefined'? – RobG