Есть ли что-то в javascript/jQuery, чтобы проверить, установлена или недоступна переменная? В php мы используем isset($variable), чтобы проверить что-то вроде этого.
спасибо.
Есть ли что-то в javascript/jQuery, чтобы проверить, установлена или недоступна переменная? В php мы используем isset($variable), чтобы проверить что-то вроде этого.
спасибо.
Попробуйте следующее выражение:
typeof(variable) != "undefined" && variable !== null
Это будет true, если переменная определена и не является нулевой, что эквивалентно тому, как работает PHP isset.
Вы можете использовать его следующим образом:
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;
}
		typeof будет служить цели, я думаю
if(typeof foo != "undefined"){}
		Если вы хотите проверить, существует ли свойство: hasOwnProperty - это путь
И поскольку большинство объектов являются свойствами какого-либо другого объекта (в конечном итоге приводящего к объекту window), это может хорошо работать для проверки того, были ли объявлены значения.
Не естественно, нет... Тем не менее, поиск в Google: http://phpjs.org/functions/isset:454
http://phpjs.org/functions/isset:454
Проект phpjs является надежным источником. Множество js-эквивалентных php-функций доступно там. Я использую его с давних пор и не обнаружил никаких проблем.
Проблема заключается в том, что передача переменной undefined функции вызывает ошибку.
Это означает, что вам нужно запустить 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 и не думают, что она установлена в нуль, что это правильно, в этом случае удалите эту часть)variable !== '' проверяет, установлена ли переменная в пустую строку, вы можете удалить ее, если пустая строка подсчитывается как установленная для вашего использования.Надеюсь, это поможет кому-то:)
Вы можете просто:
if(variable||variable===0){
    //Yes it is set
    //do something
}
else {
    //No it is not set
    //Or its null
    //do something else 
}