javascript / jQuery中是否有东西可以检查变量是否设置/可用?在php中,我们使用isset($variable)
来检查这样的内容。
感谢。
答案 0 :(得分:130)
试试这个表达式:
typeof(variable) != "undefined" && variable !== null
如果变量已定义且不为null,则这将成立,这相当于PHP的设置工作方式。
你可以像这样使用它:
if(typeof(variable) != "undefined" && variable !== null) {
bla();
}
答案 1 :(得分:9)
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;
}
答案 2 :(得分:3)
typeof将达到我认为的目的
if(typeof foo != "undefined"){}
答案 3 :(得分:3)
如果你想检查一个属性是否存在:hasOwnProperty是要走的路
由于大多数对象都是其他对象的属性(最终导致window
对象),因此可以很好地检查是否已声明值。
答案 4 :(得分:2)
不自然,没有......然而,谷歌的搜索结果给出了这个:http://phpjs.org/functions/isset:454
答案 5 :(得分:2)
http://phpjs.org/functions/isset:454
phpjs项目是值得信赖的来源。那里有很多js等效的php函数。我已经使用了很长时间,到目前为止没有发现任何问题。
答案 6 :(得分:1)
问题是将未定义的变量传递给函数会导致错误。
这意味着你必须先将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:{};
答案 7 :(得分:0)
这里:)
function isSet(iVal){
return (iVal!=="" && iVal!=null && iVal!==undefined && typeof(iVal) != "undefined") ? 1 : 0;
} // Returns 1 if set, 0 false
答案 8 :(得分:0)
除 @ emil-vikström的回答外,检查variable!=null
对variable!==null
以及variable!==undefined
(或{{ 1}})。
答案 9 :(得分:0)
每个答案的某些部分都有效。我将它们全部编译成一个函数“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 !== ''
检查变量是否设置为空字符串,如果空字符串按用例设置,则可以删除此字符串希望这有助于某人:)
答案 10 :(得分:-1)
你可以:
if(variable||variable===0){
//Yes it is set
//do something
}
else {
//No it is not set
//Or its null
//do something else
}