I have a function in a class
MyClass.prototype.IsFriend = function(){
return (this.m_Object1 && !this.m_Object1.m_ABoolean && this.m_Object2);
};
m_Object1
is an object in MyClass
.
m_ABoolean
is a boolean within m_Object1
, true
or false
.
m_Object2
is another object in MyClass
.
When this function should be returning false
when m_Object1
is null
OR m_ABoolean
is true
OR m_Object2
is null, it returns null
instead.
Note: m_Object1
, m_ABoolean
and m_Object2
are never undefined
.
Why?
CodePudding user response:
The && operator return the first falsy value (the operand itself) it encounters, if it encounters null it will return null -> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND
CodePudding user response:
Logical operators in javascript return the first logically determined value from left to right,
For instance, &&
operator returns the first value if it's falsy or the second one if not.
This answer is a good read and the MDN Documentation is a good reference.
CodePudding user response:
I think that some of your values are null since:
true && null === null
Don't you have a way to check with debugger or with console.log
the output of these values?