189

可能重复:
在 JavaScript 中检测未定义的对象
属性

我们如何为未定义的变量添加检查,例如:

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

11 回答 11

425

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

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

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

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

于 2012-05-18T13:17:12.360 回答
29

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

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

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

于 2012-05-18T13:24:52.060 回答
16

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

function A(val){
  if(typeof(val)  === "undefined") 
    //do this
  else
   //do this
}
于 2012-05-18T13:18:07.540 回答
10

我知道我回答这个函数迟到了,但是 jquery 有一个内置函数来做到这一点

if(jQuery.type(val) === "undefined"){
    //Some code goes here
}

请参阅 jquery.type https://api.jquery.com/jQuery.type/的 jquery API 文档。

于 2015-09-21T13:28:27.703 回答
4

您可以使用速记技术来检查它是否未定义或为空

 function A(val)
 {
   if(val || "") 
   //do this
 else
 //do this
 }

希望对你有帮助

于 2015-06-03T10:41:44.070 回答
4
if (value === undefined) {
    // ...
}
于 2018-02-27T11:53:46.260 回答
1

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

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

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

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

于 2015-12-27T19:38:39.030 回答
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')
    }
  })
于 2015-10-14T14:29:42.153 回答
0

我不确定这是不是最好的解决方案,但它工作正常:

if($someObject['length']!=0){
    //do someting
}
于 2016-02-24T09:25:20.533 回答
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);
    }
}

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

于 2017-07-14T02:24:09.790 回答
0

您可以使用两种方式 1) if ( val == null ) 2)if ( val === undefine )

于 2018-02-27T12:00:59.070 回答