Вот это
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'))
И да и нет.
Во-первых, оба ваши примера ошибочны, так как 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")
Продвижение своими сайтами как стратегия роста и независимости