如何在jQuery中检查“undefined”值

196

可能是检测未定义对象属性的重复问题。 - Cœur
11个回答

444

JQuery库的开发是为了简化和统一某些JavaScript功能。

但是如果您需要检查变量是否为undefined值,则不需要发明任何特殊方法,因为JavaScript有一个typeof运算符,它简单、快速并且跨平台:

if (typeof value === "undefined") {
    // ...
}
它返回一个字符串,指示变量或其他未评估的操作数的类型。与if(value === undefined){...}相比,这种方法的主要优势在于,typeof如果变量value不存在,不会引发异常。

13
@nahum jQuery是一个JavaScript库。这不是一种不同的编程语言。 - VisioN
11
你确定要评论这个吗?我知道它是同一个人。但我猜他想知道是否存在类似于$.isUndefined(Object)的jQuery方法,并返回true或false值。typeof只是JavaScript本身,没有任何框架。 - ncubica
3
@Alberici("#myId") 是一个字符串常量,始终被定义为 "string" 类型。如果你想表示通过 $("#myId") 创建的实际 jQuery 对象,它将始终被定义为 "object"(如果你已经正确链接了 jQuery)。可以使用 if ($("#myId").length > 0) { ... } 来判断是否存在具有 ID myId 的 DOM 元素,而检查其值是否不为空则可以使用 if ($("#myId").val()) { ... }。这些语句都与本问题主题无关。 - VisioN
从jquery 1.4.2开始,您可以使用$.type(selector)=== 'undefined'来检查undefined值。来源:https://api.jquery.com/jQuery.type/ - Tân
1
正如答案中所提到的,简单的 value === undefined 如果 value 变量不存在将会引发异常。因此在实际应用中完全取决于您使用什么。 - VisioN
显示剩余2条评论

32
在这种情况下,您可以使用 === undefined 比较: if(val === undefined) 这是因为 val 始终存在(它是一个函数参数)。
如果您想测试任意未定义的变量(即可能根本不存在),则必须使用 if(typeof val === 'undefined')以避免在val不存在的情况下引发异常。

17

请注意,typeof始终返回一个字符串,如果变量根本不存在,则不会产生错误。

function A(val){
  if(typeof(val)  === "undefined") 
    //do this
  else
   //do this
}

1
对于字符串比较,我认为我们需要使用 === 而不是 == - Sreeram
@Sreeram,它们都进行比较,只是以不同的方式...这将很好地工作。 - raddrick

12

我知道我回答这个函数有点晚了,但jQuery有一个内置函数可以做到这一点


我知道我回答这个函数有点晚了,但是jQuery有内置函数可以实现此功能。
if(jQuery.type(val) === "undefined"){
    //Some code goes here
}

请参考jquery.type的jquery API文档了解相关信息。


5
您可以使用速记技术来检查它是未定义还是空值。
 function A(val)
 {
   if(val || "") 
   //do this
 else
 //do this
 }

希望这能对你有所帮助。

1
当我测试 "typeof obj === undefined" 时,alert(typeof obj) 返回 object,即使 obj 是未定义的。 因为 obj 的类型是 Object,所以它返回 Object,而不是 undefined。 因此,在经过数小时的测试后,我选择了以下技巧。
if(document.getElementById(obj) !== null){
//do...
}else{
//do...
}

我不确定为什么第一种技术不起作用,但是我使用这种方法完成了我的工作。


0

我不确定这是最好的解决方案,但它运行良好:

if($someObject['length']!=0){
    //do someting
}

0
如果你有元素的名称而不是id,我们可以对所有文本元素进行未定义检查(例如)并用默认值0.0填充它们。
var aFieldsCannotBeNull=['ast_chkacc_bwr','ast_savacc_bwr'];
 jQuery.each(aFieldsCannotBeNull,function(nShowIndex,sShowKey) {
   var $_oField = jQuery("input[name='"+sShowKey+"']");
   if($_oField.val().trim().length === 0){
       $_oField.val('0.0')
    }
  })

0

检查是否未定义

if(typeof myVal === "undefined") {
   //some code
}

检查是否为undefined或null或空或false或0

if(!myVal) {
   // some code
} else {
   // myVal is flawless 
}

除了其他答案中已经提到的内容,这个回答带来了什么新的东西? - Vega

0
function isValue(value, def, is_return) {
    if ( $.type(value) == 'null'
        || $.type(value) == 'undefined'
        || $.trim(value) == ''
        || ($.type(value) == 'number' && !$.isNumeric(value))
        || ($.type(value) == 'array' && value.length == 0)
        || ($.type(value) == 'object' && $.isEmptyObject(value)) ) {
        return ($.type(def) != 'undefined') ? def : false;
    } else {
        return ($.type(is_return) == 'boolean' && is_return === true ? value : true);
    }
}

试试这个~ 全类型检查器


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接