如何确定变量是未定义的还是空的?
我的代码如下:
var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
// DO SOMETHING
};
<div id="esd-names">
<div id="name"></div>
</div>
但如果我这样做,JavaScript解释器将停止执行。
如何确定变量是未定义的还是空的?
我的代码如下:
var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
// DO SOMETHING
};
<div id="esd-names">
<div id="name"></div>
</div>
但如果我这样做,JavaScript解释器将停止执行。
当前回答
我仍然认为测试这两个条件的最佳/安全方法是将值转换为字符串:
var EmpName = $("div#esd-names div#name").attr('class');
// Undefined check
if (Object.prototype.toString.call(EmpName) === '[object Undefined]'){
// Do something with your code
}
// Nullcheck
if (Object.prototype.toString.call(EmpName) === '[object Null]'){
// Do something with your code
}
其他回答
为了测试变量是否为空或未定义,我使用以下代码。
if(typeof sVal === 'undefined' || sVal === null || sVal === ''){
console.log('variable is undefined or null');
}
结合以上答案,似乎最完整的答案是:
if( typeof variable === 'undefined' || variable === null ){
// Do stuff
}
这应该适用于任何未声明或已声明且显式设置为null或undefined的变量。对于具有实际非空值的任何声明变量,布尔表达式的计算结果应为false。
通过最新的javascript更改,您可以使用新的逻辑运算符??=检查左操作数是否为空或未定义,如果为空,则分配右操作数的值。
SO,
if(EmpName == null){ // if Variable EmpName null or undefined
EmpName = 'some value';
};
相当于:
EmpName ??= 'some value';
var i;
if (i === null || typeof i === 'undefined') {
console.log(i, 'i is undefined or null')
}
else {
console.log(i, 'i has some value')
}
(null == undefined) // true
(null === undefined) // false
因为==检查类型和值。两者的类型不同,但值相同。