есть ли что-то вроде isset php в javascript/jQuery? [дубликат]
этот вопрос уже есть ответ здесь:
- JavaScript isset () эквивалент 17 ответов
есть ли что-то в javascript/jQuery, чтобы проверить, установлена ли переменная/доступна или нет? В php мы используем isset($variable)
чтобы проверить что-то вроде этого.
спасибо.
11 ответов:
попробуйте это выражение:
typeof(variable) != "undefined" && variable !== null
это будет верно, если переменная определена, а не null, что эквивалентно тому, как работает isset PHP.
Вы можете использовать его как это:
if(typeof(variable) != "undefined" && variable !== null) { bla(); }
function isset () { // discuss at: http://phpjs.org/functions/isset // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: FremyCompany // + improved by: Onno Marsman // + improved by: Rafał Kukawski // * example 1: isset( undefined, true); // * returns 1: false // * example 2: isset( 'Kevin van Zonneveld' ); // * returns 2: true var a = arguments, l = a.length, i = 0, undef; if (l === 0) { throw new Error('Empty isset'); } while (i !== l) { if (a[i] === undef || a[i] === null) { return false; } i++; } return true; }
Если вы хотите проверить, существует ли свойство:hasOwnProperty путь
а так как большинство объектов являются свойствами какого-то другого объекта (в конечном итоге приводит к
Не естественно, нет... Однако, погуглив вещь дала это:http://phpjs.org/functions/isset:454
http://phpjs.org/functions/isset:454
проект phpjs является надежным источником. Там доступно множество JS-эквивалентных php-функций. Я использую с давних пор и не нашел никаких проблем до сих пор.
проблема в том, что передача неопределенной переменной в функцию вызывает ошибку.
это означает, что вы должны запустить typeof перед передачей его в качестве аргумента.
самый чистый способ, который я нашел, чтобы сделать это так:
function isset(v){ if(v === 'undefined'){ return false; } return true; }
использование:
if(isset(typeof(varname))){ alert('is set'); } else { alert('not set'); }
теперь код намного компактнее и читабельнее.
Это все равно даст ошибку, если вы попытаетесь вызвать переменную из не созданной переменной, например:
isset(typeof(undefVar.subkey))
таким образом прежде чем пытаться выполнить это, вы должны убедиться, что объект определен:
undefVar = isset(typeof(undefVar))?undefVar:{};
вот :)
function isSet(iVal){ return (iVal!=="" && iVal!=null && iVal!==undefined && typeof(iVal) != "undefined") ? 1 : 0; } // Returns 1 if set, 0 false
кроме @emil-vikström ответ, проверка на
variable!=null
относится кvariable!==null
а такжеvariable!==undefined
(илиtypeof(variable)!="undefined"
).
некоторые части каждого из этих ответов работы. Я скомпилировал их все вниз в функцию "isset" так же, как вопрос задавал и работает, как это делает в PHP.
// isset helper function var isset = function(variable){ return typeof(variable) !== "undefined" && variable !== null && variable !== ''; }
вот пример использования как использовать:
var example = 'this is an example'; if(isset(example)){ console.log('the example variable has a value set'); }
это зависит от ситуации, в которой вам это нужно, но позвольте мне разбить то, что делает каждая часть:
typeof(variable) !== "undefined"
проверяет, определена ли переменная вообщеvariable !== null
проверяет, если переменная null (некоторые люди явно устанавливают null и не думают, что если он установлен в null, что это правильно, в этом случае удалите эту часть)variable !== ''
проверяет, установлена ли переменная в пустую строку, вы можете удалить это, если пустая строка считается установленной для вашего варианта использованиянадеюсь, это кому-то поможет :)