如何在jQuery中检查'undefined'值


Answers:


379

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

但是,如果需要根据undefined值检查变量,则无需发明任何特殊方法,因为JavaScript具有typeof简单,快速且跨平台的运算符:

if (typeof value === "undefined") {
    // ...
}

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


12
@nahum jQuery是一个JavaScript库。这不是另一种编程语言。
VisioN

9
哈哈omg,您真的对此发表评论吗?我知道是同一个人。但是我想他想知道jQuery中是否存在某种方法,例如$ .isUndefined(Object);。并返回值true或false。typeof只是没有任何框架的javascript。
nc13年

我的问题之一是:如果您正在做这样的事情("#myId"),请确保您真正需要的是:typeof ("#myId")=== "undefined" b。或:typeof ("#myId").val() === "undefined"
Alberici 2014年

3
@Alberici ("#myId")只是一个字符串常量。它将始终被定义并具有的类型"string"。如果您的意思是使用创建的实际jQuery对象$("#myId"),则将始终定义为"object"(如果您正确链接了jQuery)。myId可以使用评估ID为的DOM元素的存在if ($("#myId").length > 0) { ... },而可以使用来检查其值是否为空if ($("#myId").val()) { ... }。这些条款实际上都不涉及这个问题的主题。
2014年

1
@ user3284463如答案中所述,value === undefined如果value变量不存在,则simple 将引发异常。因此,在现实生活中使用什么完全取决于您。
VisioN

26

在这种情况下,您可以使用=== undefined比较:if(val === undefined)

之所以有效,是因为它val始终存在(这是一个函数参数)。

如果要测试不是参数的任意变量,即可能根本没有定义,则必须使用它if(typeof val === 'undefined')来避免异常(如果val不存在)。


16

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

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

1
对于字符串比较,我认为,我们需要使用===的,而不是==
Sreeram

@Sreeram他们都以不同的方式进行比较...这将很好地工作
RGB




1

当我测试“ typeof obj === undefined”时,即使未定义obj ,alert(typeof obj)返回的object也是如此。由于obj是Object其返回类型Object,因此不是undefined

因此,经过数小时的测试,我选择了以下技术。

if(document.getElementById(obj) !== null){
//do...
}else{
//do...
}

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


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($someObject['length']!=0){
    //do someting
}

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);
    }
}

试试这个〜所有类型检查器


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.