问题
How do I determine if variable is undefined
or null
? My code is as follows:
var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
//DO SOMETHING
};
<div id="esd-names">
<div id="name"></div>
</div>
But if I do this, the JavaScript interpreter halts execution.
回答1:
You can use the qualities of the abstract equality operator to do this:
if (variable == null){
// your code here.
}
Because null == undefined
is true, the above code will catch both null
and undefined
.
回答2:
The standard way to catch null
and undefined
simultaneously is this:
if (variable == null) {
// do something
}
--which is 100% equivalent to the more explicit but less concise:
if (variable === undefined || variable === null) {
// do something
}
When writing professional JS, it's taken for granted that type equality and the behavior of == vs === is understood. Therefore we use ==
and only compare to null
.
Edit again
The comments suggesting the use of typeof
are simply wrong. Yes, my solution above will cause a ReferenceError if the variable doesn't exist. This is a good thing. This ReferenceError is desirable: it will help you find your mistakes and fix them before you ship your code, just like compiler errors would in other languages.
You should not have any references to undeclared variables in your code.
回答3:
Combining the above answers, it seems the most complete answer would be:
if( typeof variable === 'undefined' || variable === null ){
// Do stuff
}
This should work for any variable that is either undeclared or declared and explicitly set to null or undefined. The boolean expression should evaluate to false for any declared variable that has an actual non-null value.
回答4:
if (variable == null) {
// Do stuff, will only match null or undefined, this won't match false
}
回答5:
if (typeof EmpName != 'undefined' && EmpName) {
will evaluate to true if value is not:
null
undefined
NaN
empty string ("")
0
false
回答6:
jQuery attr()
function returns either a blank string or the actual value (and never null
or undefined
). The only time it returns undefined
is when your selector didn't return any element.
So you may want to test against a blank string. Alternatively, since blank strings, null and undefined are false-y, you can just do this:
if (!EmpName) { //do something }
回答7:
I've come to write my own function for this. javascript is weird
Usable on literally anything. (Note that this also checks if the variable contains any usable values. But since this information is usually also needed, I think it's worth posting). Please consider leaving a note.
function empty(v) {
let type = typeof v;
if (type === 'undefined') {
return true;
}
if (type === 'boolean') {
return !v;
}
if (v === null) {
return true;
}
if (v === undefined) {
return true;
}
if (v instanceof Array) {
if (v.length < 1) {
return true;
}
} else if (type === 'string') {
if (v.length < 1) {
return true;
}
if (v === '0') {
return true;
}
} else if (type === 'object') {
if (Object.keys(v).length < 1) {
return true;
}
} else if (type === 'number') {
if (v === 0) {
return true;
}
}
return false;
}
Typescript-compatible.
Edit. this function should do exactly the same thing like PHPs empty() function (see RETURN VALUES
)
Considers undefined
, null
, false
, 0
, 0.0
, "0"
{}
, []
as empty.
"0.0"
, NaN
, " "
, true
are considered non-empty.
回答8:
If the variable you want to check is a global, do
if (window.yourVarName) {
// Your code here
}
This way to check will not throw an error even if the yourVarName
variable doesn't exist.
Example: I want to know if my browser supports History API
if (window.history) {
history.back();
}
How this works:
window
is an object which holds all global variables as its properties, and in JavaScript it is legal to try to access a non-existing object property. If history
doesn't exist then window.history
returns undefined
. undefined
is falsey, so code in an if(undefined){}
block won't run.
回答9:
The shortest and easiest:
if(!EmpName ){
// DO SOMETHING
}
this will evaluate true if EmpName is:
- null
- undefined
- NaN
- empty
- string ("")
- 0
- false
回答10:
I've just had this problem i.e. checking if an object is null.
I simply use this:
if (object) {
// Your code
}
For example:
if (document.getElementById("enterJob")) {
document.getElementById("enterJob").className += ' current';
}
回答11:
Since you are using jQuery, you can determine whether a variable is undefined or its value is null by using a single function.
var s; // undefined
jQuery.isEmptyObject(s); // will return true;
s = null; // defined as null
jQuery.isEmptyObject(s); // will return true;
// usage
if(jQuery.isEmptyObject(s)){
alert('Either variable: s is undefined or its value is null');
}else{
alert('variable: s has value ' + s);
}
s = 'something'; // defined with some value
jQuery.isEmptyObject(s); // will return false;
回答12:
jQuery check element not null
var dvElement = $('#dvElement');
if (dvElement.length > 0) {
//do something
}
else{
//else do something else
}
回答13:
The easiest way to check is:
if(!variable) {
// If the variable is null or undefined then execution of code will enter here.
}
回答14:
With the solution below:
const getType = (val) => typeof val === 'undefined' || !val ? null : typeof val;
const isDeepEqual = (a, b) => getType(a) === getType(b);
console.log(isDeepEqual(1, 1)); // true
console.log(isDeepEqual(null, null)); // true
console.log(isDeepEqual([], [])); // true
console.log(isDeepEqual(1, "1")); // false
etc...
I'm able to check for the following:
- null
- undefined
- NaN
- empty
- string ("")
- 0
- false
回答15:
In Javascript as per my knowledge, we can check undefined, null or empty var like below.
if (var === undefined){
}
if (var === null){
}
if (var === ''){
}
Check all condition
if(var === undefined || var === null || var === ''){
}
回答16:
i run this test on chrome console, using (void 0) you can check undefined
var c;
undefined
if(c === void 0)alert();
// output = undefined
var c = 1;
// output = undefined
if(c === void 0)alert();
// output = undefined
// check c value c
// output = 1
if(c === void 0)alert();
// output = undefined
c = undefined;
// output = undefined
if(c === void 0)alert();
// output = undefined
回答17:
Best way:
if(typeof variable==='undefined' || variable===null) {
/* do your stuff */
}
回答18:
var i;
if(i === null || typeof i === 'undefined'){
console.log(i,'i is undefined or null')
}else{
console.log(i,'i has some value')
}
回答19:
You can simply use the following (I know there are shorter ways to do this, but this may make it easier to visually observe, atleast for others looking at the code).
if (x === null || x === undefined) {
// add your response code here etc.
}
回答20:
To test if a variable is null or undefined I use the below code.
if(typeof sVal === 'undefined' || sVal === null || sVal === ''){
console.log('variable is undefined or null');
}
回答21:
(null == undefined) // true
(null === undefined) // false
Because === checks for both the type and value. Type of both are different but value is the same.
回答22:
Calling typeof null returns a value of “object”, as the special value null is considered to be an empty object reference. Safari through version 5 and Chrome through version 7 have a quirk where calling typeof on a regular expression returns “function” while all other browsers return “object”.
回答23:
var x;
if (x === undefined) {
alert ("only declared, but not defined.")
};
if (typeof y === "undefined") {
alert ("not even declared.")
};
You can only use second one: as it will check for both definition and declaration
回答24:
This is a very old question, but I still think the best/safe way to test these 2 conditions are to cast the value to string:
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
}
回答25:
You can check if the value is undefined or null by simply using typeof:
if(typeof value == 'undefined'){
回答26:
if(x==null)
is bad idea in javascript,judge with "=="
may cause unexpected type coercion, and can't be read by coffee-script,
never use "==" or "!=" in condition judgment!
if(x)
will be better.but becareful 0 and "", it will be treat as false,not equal method with "!= null"
is true.
https://www.w3schools.com/js/js_best_practices.asp
来源:https://stackoverflow.com/questions/2647867/how-to-determine-if-variable-is-undefined-or-null