Одно ли это и тоже?

112
11 января 2021, 01:50

Вот это

if (typeof(item.PROPERTY_BAL_VALUE == 'undefined' ||  item.PROPERTY_BAL_VALUE == 'NaN'))

Тоже самое что?

if (typeof(item.PROPERTY_BAL_VALUE == 'undefined') || typeof (item.PROPERTY_BAL_VALUE == 'NaN'))
Answer 1

И да и нет.

Во-первых, оба ваши примера ошибочны, так как typeof во всех вариантах будет выдавать boolean, ведь вы проверяете не тип поля объекта, а тип логической операции:

const item = { PROPERTY_BAL_VALUE: undefined } 
 
console.log(typeof(item.PROPERTY_BAL_VALUE == 'undefined' ||  item.PROPERTY_BAL_VALUE == 'NaN'))

Во-вторых, NaN имеет тип number, а не NaN, поэтому форму записи typeof(some) == NaN использовать бессмысленно.

В-третьих, нет смысла использовать typeof в таких случаях, ведь можно просто проверить используя сравнение с undefined и функцию isNaN:

const item = { 
  PROPERTY_UNDEFINED: undefined, 
  PROPERTY_NAN: NaN, 
} 
 
console.log(item.PROPERTY_UNDEFINED === undefined || isNaN(item.PROPERTY_UNDEFINED)) 
console.log(item.PROPERTY_NAN === undefined || isNaN(item.PROPERTY_NAN))

Кстати, кроме того, стоит учитывать, что undefined - это falsy-значение, поэтому, в некоторых случаях стоит использовать строгое сравнение (===) или действительно typeof:

const item = { 
  PROPERTY_UNDEFINED: undefined, 
  PROPERTY_NULL: null 
} 
 
console.log("item.PROPERTY_UNDEFINED == undefined:", item.PROPERTY_UNDEFINED == undefined) 
console.log("item.PROPERTY_NULL == undefined:", item.PROPERTY_NULL == undefined) 
console.log("item.PROPERTY_UNDEFINED === undefined:", item.PROPERTY_UNDEFINED === undefined) 
console.log("item.PROPERTY_NULL === undefined:", item.PROPERTY_NULL === undefined) 
console.log('typeof(item.PROPERTY_UNDEFINED) == "undefined":', typeof(item.PROPERTY_UNDEFINED) == "undefined") 
console.log('typeof(item.PROPERTY_NULL) == "undefined":', typeof(item.PROPERTY_NULL) == "undefined")

READ ALSO
Редактор графиков на Qt 4.8

Редактор графиков на Qt 4.8

Я делаю график на QtПока на этапе строительства сетки

145
Как создать проект для работы с win 32 api

Как создать проект для работы с win 32 api

Хочу отметить, что у меня Visual Studio 2019, пакет v142Как мне создать проект для работы с win 32 api

137
Компиляция со свойствами /MD /MT

Компиляция со свойствами /MD /MT

У меня есть проект, в которой я подтащил несколько либ, их компилял из сорсов самВпоследствии возникли ошибки линковки и это было связано...

138