Как проверить на undefined js
Перейти к содержимому

Как проверить на undefined js

  • автор:

JS. Проверка переменной на undefined или false

Вот пример посложнее, надо проверить переменную на лож или истину. Значит:

if(typeof undefinedVar == "undefined" && !undefinedVar) alert("Undefined and false"); else alert(undefinedVar?"Not undefined True":"Not undefined False"); 

А теперь, что недавно обнаружил я, причём искал в интернете и не нашел ни в одной книге.

if(!!undefinedVar) alert("Not undefined"); else alert("Undefined"); 

То-есть, «!!» — является проверкой как определена ли переменная и является истиной, а «. » — как определена переменная и является ложью.
При этом если переменная является Undefined, то всегда вернется false.

Счастливых Вам экспериментов!

 var iDefined=true; var iDefinedMeToo=false; if(!!iDefined) alert("iDefined true"); else alert("iDefined false"); if(!!iDefinedMeToo) alert("iDefinedMeToo true"); else alert("iDefinedMeToo false"); if(!!iNotDefined) alert("iNotDefined true"); else alert("iNotDefined false or iNotDefined is undefined"); 

Проверка значений переменных на null или NaN и их замена на 0

Если несколько или одна переменная равна null или NaN, как сделать так, что ее значение перезаписалось на 0?

if (type_work_amount || type_work_amount2 || type_work_amount3 == null || NaN) < // код >

Отслеживать
10.3k 8 8 золотых знаков 15 15 серебряных знаков 30 30 бронзовых знаков
задан 28 окт 2022 в 10:04
73 1 1 серебряный знак 9 9 бронзовых знаков
Лучше сохраните данные в массив, вместо создания множества переменных 🙂
28 окт 2022 в 10:22
@ΝNL993 покажите пример как сделать массивом?
28 окт 2022 в 10:27
Я из вашего кода вообще не понимаю что происходит
28 окт 2022 в 11:19

$type_work_amount = 22; $type_work_amount2 = null; $type_work_amount3 = 99; if ($type_work_amount === null) < $type_work_amount = 0; >else if ($type_work_amount2 === null) < $type_work_amount2 = 0; >else if ($type_work_amount3 === null) < $type_work_amount3 = 0; >let sum = $type_work_amount + $type_work_amount2 + $type_work_amount3; console.log(sum);

28 окт 2022 в 12:13

[123, null, NaN].map(. ) — а внутри функция которая берёт первый аргумент — элемент массива, а в функции уже делаете проверку, если текущее значение невалидное (null или NaN), тогда возвращаете 0, в противоположном случае, возвращаете то же значение.

28 окт 2022 в 13:16

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Для проверки значений на null, undefined, NaN в большенстве случаев достаточно преобразовать значение к типу boolean, как это делается в операторе if . Для явного преобразования можно воспользоваться функцией Boolean(value) или воспользоваться оператором !!(Двойное НЕ) !!value

Стоит заметить, что 0 и пустая строка вернут false.

Если необходимо, что бы 0 и пустая строка были не false, необходимо дополнительно реализовывать проверки.

Числа

Для чисел (typeof value === ‘number’) можно явно сравнить value === 0 , однако стоит помнить, что typeof NaN === ‘number’.
Проверить число, что оно является NaN можно при помощи встроенного метода чисел Number.isNaN(value) (Сокращенно isNaN(value) ) — вернет true, если value это NaN Для проверки числа на Infinity (бесконечность — возникает при делении на 0) есть встроенный метод Number.isFinite(value) (Сокращенно isFinite(value) ) — вернет true если число конечно.

Строки

Для строки выполнить проверку value === » или просто проверить на тип typeof value === ‘string’

Так же стоит помнить, что массив и объект всегда будут возвращать true, даже если они пустые.

Массивы

Для проверки массива достаточно проверить его длину. Если 0, то массив пустой
value.length === 0 или if (!value.length) < массив заполнен >else < массив пуст >
Для проверки, что переменная является массивом, можно обратиться к встроенному методу массивов Array.isArray(value) — вернет true, если это массив.

Объекты

Для выполнения проверки, что объект пустой, можно воспользоваться встроенным методом объектов Object.keys(values) , который возвращает массив ключей. Если длина полученного массива 0, значит объект пуст.

Так как тип данных у массивов и объектов одинаковый и typeof вернет ‘object’, то для того что бы отличить массив от объекта, необходимо проверить, является ли он массивом через встроенный метод массива Array.isArray(value)

Относительно вашего примера, я бы пошел простым путем и создал бы функцию, которая будет возвращать 0 если значение null или NaN или само значение переменной, если это не так:

let type_work_amount = 123; let type_work_amount2 = null; let type_work_amount3 = 3 / 'a'; console.log(type_work_amount, type_work_amount2, type_work_amount3); function checkVariable(val) < if (!val) return 0 return val; >console.log(checkVariable(type_work_amount)); console.log(checkVariable(type_work_amount2)); console.log(checkVariable(type_work_amount3)); //Если надо переопределить значение в переменной по условию, то можно присваивать переменной значение, которое возвращается из функции type_work_amount = checkVariable(type_work_amount); type_work_amount2 = checkVariable(type_work_amount2); type_work_amount3 = checkVariable(type_work_amount3); // Если надо что бы сработало одно из условий, то надо записать ваш IF вот так if (!type_work_amount || !type_work_amount2 || !type_work_amount) < // Какой то ваш код >

Как проверить существует ли переменная?

Получаешь тип и сравниваешь его с undefined . Если true , то переменная установлена.

if(typeof dfshkhdkjfh !== "undefined") alert('Defined'); else alert('Not defined');

Отслеживать
ответ дан 27 мая 2015 в 13:54
user31688 user31688

if(typeof par === 'undefined') < alert("par undefined"); >else < alert("par defined"); >var par2 = "something"; if(typeof par2 === 'undefined') < alert("par2 undefined"); >else

Отслеживать
ответ дан 27 мая 2015 в 13:52
user177221 user177221

function isset(r) < return typeof r !== 'undefined'; >// проверка на переменную varname в глобальном контексте console.log(isset(window['varname']); // проверка на переменную V у объекта console.log(isset(App.V)); 

Удобней использовать функцию, так как часто требуется такова рода проверка.

Или более продвинутый вариант

function isset(obj) < if (typeof obj === 'undefined' || obj === null ) < return false; >else

Ну и для сверх ленивых и знающих что будет в переменной:

if (!!variable) < //exist >

Как проверить на undefined?

Есть код который выводит сумму чисел в массиве, без наибольшего и наименьшего значения. Не могу проверит входное значение на undefined. Пробовал проверять таким способом:

if (typeof something === "undefined")

Но тесты не прохожу, мне нужно если undefined то выводить просто 0.

function getMaxOfArray(numArray) < return Math.max.apply(null, numArray); >function getMinOfArray(numArray) < return Math.min.apply(null, numArray); >function sumArray(numbers)< var maxPlusMin = getMaxOfArray(numbers) + getMinOfArray(numbers); if (numbers && isNaN(numbers) & (numbers.length != 0) ) < return numbers.reduce(function(sum, n)< return n + sum; >, -maxPlusMin ); > else < numbers = 0; >> alert(sumArray([ 1, 2, 3, 4, 10 ]));

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *