195

Possible Duplicate:
Detecting an undefined object property in JavaScript
javascript undefined compare

How we can add a check for an undefined variable, like:

function A(val) {
  if (val == undefined) 
    // do this
  else
    // do this
}
Community
  • 1
  • 1
Gaurav
  • 8,367
  • 14
  • 55
  • 90
  • Possible duplicate of [Detecting an undefined object property](https://stackoverflow.com/questions/27509/detecting-an-undefined-object-property) – Cœur Jul 14 '18 at 13:54

10 Answers10

440

JQuery library was developed specifically to simplify and to unify certain JavaScript functionality.

However if you need to check a variable against undefined value, there is no need to invent any special method, since JavaScript has a typeof operator, which is simple, fast and cross-platform:

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

It returns a string indicating the type of the variable or other unevaluated operand. The main advantage of this method, compared to if (value === undefined) { ... }, is that typeof will never raise an exception in case if variable value does not exist.

VisioN
  • 143,310
  • 32
  • 282
  • 281
  • 13
    @nahum jQuery is a JavaScript library. [***This is not a different programming language.***](http://meta.stackexchange.com/a/48195/187073) – VisioN May 31 '13 at 17:47
  • 11
    lol omg are you really commenting this?? I know is the same man. But I guess he want to know if exist some kind of method in jQuery like $.isUndefined(Object); and return the value true or false. typeof is just javascript without any framework. – ncubica May 31 '13 at 17:49
  • One of my problems was: if you are doing something like this `("#myId")`, make sure what do you really need: a. `typeof ("#myId")=== "undefined"` b. Or: `typeof ("#myId").val() === "undefined"` – Alberici Dec 26 '14 at 22:54
  • 3
    @Alberici `("#myId")` is nothing else but a **string** constant. It will always be defined and have a type of `"string"`. If you mean an actual *jQuery object* created with `$("#myId")`, it will always be defined as `"object"` (if you have jQuery linked correctly). Existence of a DOM element with ID `myId` can be assessed with `if ($("#myId").length > 0) { ... }`, while check if its value is not empty can be done with `if ($("#myId").val()) { ... }`. Neither of these clauses actually relate to the topic of this question. – VisioN Dec 27 '14 at 01:00
  • From jquery 1.4.2, you can use `$.type(selector) === 'undefined'` to check `undefined` value. Source: https://api.jquery.com/jQuery.type/ – Tân Dec 15 '15 at 19:12
  • it's supposed to be `value === undefined` **without** quotes. @Hast This works in jQuery – Ikhlak S. Jun 27 '16 at 10:31
  • 1
    @user3284463 As mentioned in the answer, simple `value === undefined` will raise an exception if `value` variable does not exist. So it's completely up to you what to use in the real life. – VisioN Jun 27 '16 at 11:59
32

In this case you can use a === undefined comparison: if(val === undefined)

This works because val always exists (it's a function argument).

If you wanted to test an arbitrary variable that is not an argument, i.e. might not be defined at all, you'd have to use if(typeof val === 'undefined') to avoid an exception in case val didn't exist.

ThiefMaster
  • 310,957
  • 84
  • 592
  • 636
17

Note that typeof always returns a string, and doesn't generate an error if the variable doesn't exist at all.

function A(val){
  if(typeof(val)  === "undefined") 
    //do this
  else
   //do this
}
Jignesh Rajput
  • 3,538
  • 30
  • 50
12

I know I am late to answer the function but jquery have a in build function to do this

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

Refer jquery API document of jquery.type https://api.jquery.com/jQuery.type/ for the same.

Arpita
  • 1,386
  • 1
  • 15
  • 35
4

You can use shorthand technique to check whether it is undefined or null

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

hope this will help you

Rohidas Kadam
  • 428
  • 5
  • 12
1

when I am testing "typeof obj === undefined", the alert(typeof obj) returning object, even though obj is undefined. Since obj is type of Object its returning Object, not undefined.

So after hours of testing I opted below technique.

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

I am not sure why the first technique didn't work.But I get done my work using this.

Sridhar K
  • 19
  • 1
0

If you have names of the element and not id we can achieve the undefined check on all text elements (for example) as below and fill them with a default value say 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')
    }
  })
Yoosaf Abdulla
  • 3,722
  • 4
  • 31
  • 34
0

I am not sure it is the best solution, but it works fine:

if($someObject['length']!=0){
    //do someting
}
Gnqz
  • 3,292
  • 3
  • 25
  • 35
esdu
  • 1
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);
    }
}

try this~ all type checker

MGK
  • 3
  • 2
0

Check if undefined or not

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

Check if undefined or null or empty or false or 0

if(!myVal) {
   // some code
} else {
   // myVal is flawless 
}
burak isik
  • 395
  • 5
  • 6