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");
undefined
Значение глобального свойства undefined представляет значение undefined . Это одно из примитивных значений JavaScript.
| Атрибуты свойства undefined | |
|---|---|
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |
Интерактивный пример
Синтаксис
undefined
Описание
undefined является свойством глобального объекта, то есть, это переменная в глобальной области видимости. Начальным значением undefined является примитивное значение undefined .
В современных браузерах (JavaScript 1.8.5 / Firefox 4+), undefined является ненастраиваемым и незаписываемым свойством, в соответствии со спецификацией ECMAScript 5. Даже когда это не так, избегайте его переопределения.
Переменная, не имеющая присвоенного значения, обладает типом undefined . Также undefined возвращают метод или инструкция, если переменная, участвующая в вычислениях, не имеет присвоенного значения. Функция возвращает undefined , если она не возвращает какого-либо значения.
Поскольку undefined не является зарезервированным словом (en-US), он может использоваться в качестве идентификатора (имени переменной) в любой области видимости, за исключением глобальной.
// печатает 'foo string' (function () var undefined = "foo"; console.log(undefined, typeof undefined); >)(); // печатает 'foo string' (function (undefined) console.log(undefined, typeof undefined); >)("foo");
Примеры
Пример: строгое сравнение и undefined
Вы можете использовать undefined и операторы строгого равенства или неравенства для определения того, имеет ли переменная значение. В следующем коде переменная x не определена и инструкция if вычисляется в true .
var x; if (x === undefined) // эти инструкции будут выполнены > else // эти инструкции не будут выполнены >
Примечание: здесь используется оператор строгого равенства (идентичности) вместо простого оператора равенства, поскольку x == undefined также проверяет, является ли x равным null , в то время как оператор идентичности этого не делает. null не эквивалентен undefined . Для более подробной информации смотрите операторы сравнения (en-US).
Пример: оператор typeof и undefined
В качестве альтернативы можно использовать оператор typeof :
var x; if (typeof x === "undefined") // эти инструкции будут выполнены >
Одной из причин использования оператора typeof может быть та, что он не выбрасывает ошибку, если переменная не была определена.
// переменная x не была определена ранее if (typeof x === "undefined") // вычислится в true без ошибок // эти инструкции будут выполнены > if (x === undefined) // выкинет ReferenceError >
Однако, уловки такого рода должны избегаться. JavaScript является языком со статической областью видимости, так что узнать, была ли переменная определена, можно путём просмотра, была ли она определена в охватывающем контексте. Единственным исключением являет глобальная область видимости, но глобальная область видимости привязана к глобальному объекту, так что проверка существования переменной в глобальном контексте может быть осуществлена путём проверки существования свойства глобального объекта (например, используя оператор in ).
Пример: оператор void и undefined
Третьей альтернативой является оператор void .
var x; if (x === void 0) // эти инструкции будут выполнены > // переменная y не была определена ранее if (y === void 0) // выкинет ReferenceError (в отличие от оператора `typeof`) >
Спецификации
| Specification |
|---|
| ECMAScript Language Specification # sec-undefined |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 7 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
MDN
Support
- Product help
- Report an issue
Our communities
Developers
- Web Technologies
- Learn Web Development
- MDN Plus
- Hacks Blog
- Website Privacy Notice
- Cookies
- Legal
- Community Participation Guidelines
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.
как проверить на undefined js
Для проверки на undefined можно использовать оператор typeof , так как undefined это самостоятельный тип данных, или строгое сравнение === , так как undefined является примитивным типом данных:
let someVariable; console.log(typeof someVariable); // => undefined console.log(someVariable === undefined); // => true
Как проверить на 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 ]));