Key of null variable equals null not error
There is "almost duplicate": Why does accessing array index on boolean value does not raise any kind of error?
the code there looks like:
$var = false;
$value = $var['key'];
and the answer is - it's just document
Accessing variables of other types (not including arrays or objects implementing the appropriate interfaces) using [] or {} silently returns NULL.
So in this string (I am talking about your case, $var = null, but with boolean would be the same explanation, just replace NULL to boolean)
$var['key']
$var is the variable of type NULL, and accessing variable of type NULL (other type that array or object) using [] silently returns NULL.
Is there a standard function to check for null, undefined, or blank variables in JavaScript?
You can just check if the variable has a truthy
value or not. That means
if (value) {
// do something..
}
will evaluate to true
if value
is not:
- null
- undefined
- NaN
- empty string ("")
- 0
- false
The above list represents all possible falsy
values in ECMA-/Javascript. Find it in the specification at the ToBoolean
section.
Furthermore, if you do not know whether a variable exists (that means, if it was declared) you should check with the typeof
operator. For instance
if (typeof foo !== 'undefined') {
// foo could get resolved and it's defined
}
If you can be sure that a variable is declared at least, you should directly check if it has a truthy
value like shown above.
Java null check why use == instead of .equals()
They're two completely different things. ==
compares the object reference, if any, contained by a variable. .equals()
checks to see if two objects are equal according to their contract for what equality means. It's entirely possible for two distinct object instances to be "equal" according to their contract. And then there's the minor detail that since equals
is a method, if you try to invoke it on a null
reference, you'll get a NullPointerException
.
For instance:
class Foo {
private int data;
Foo(int d) {
this.data = d;
}
@Override
public boolean equals(Object other) {
if (other == null || other.getClass() != this.getClass()) {
return false;
}
return ((Foo)other).data == this.data;
}
/* In a real class, you'd override `hashCode` here as well */
}
Foo f1 = new Foo(5);
Foo f2 = new Foo(5);
System.out.println(f1 == f2);
// outputs false, they're distinct object instances
System.out.println(f1.equals(f2));
// outputs true, they're "equal" according to their definition
Foo f3 = null;
System.out.println(f3 == null);
// outputs true, `f3` doesn't have any object reference assigned to it
System.out.println(f3.equals(null));
// Throws a NullPointerException, you can't dereference `f3`, it doesn't refer to anything
System.out.println(f1.equals(f3));
// Outputs false, since `f1` is a valid instance but `f3` is null,
// so one of the first checks inside the `Foo#equals` method will
// disallow the equality because it sees that `other` == null
How do I check for null values in JavaScript?
JavaScript is very flexible with regards to checking for "null" values. I'm guessing you're actually looking for empty strings, in which case this simpler code will work:
if(!pass || !cpass || !email || !cemail || !user){
Which will check for empty strings (""
), null
, undefined
, false
and the numbers 0
and NaN
.
Please note that if you are specifically checking for numbers, it is a common mistake to miss 0
with this method, and num !== 0
is preferred (or num !== -1
or ~num
(hacky code that also checks against -1
)) for functions that return -1
, e.g. indexOf
).
How to check for an undefined or null variable in JavaScript?
You have to differentiate between cases:
- Variables can be
undefined
or undeclared. You'll get an error if you access an undeclared variable in any context other thantypeof
.
if(typeof someUndeclaredVar == whatever) // works
if(someUndeclaredVar) // throws error
A variable that has been declared but not initialized is undefined
.
let foo;
if (foo) //evaluates to false because foo === undefined
Undefined properties , like
someExistingObj.someUndefProperty
. An undefined property doesn't yield an error and simply returnsundefined
, which, when converted to a boolean, evaluates tofalse
. So, if you don't care about0
andfalse
, usingif(obj.undefProp)
is ok. There's a common idiom based on this fact:value = obj.prop || defaultValue
which means "if
obj
has the propertyprop
, assign it tovalue
, otherwise assign the default valuedefautValue
".Some people consider this behavior confusing, arguing that it leads to hard-to-find errors and recommend using the
in
operator insteadvalue = ('prop' in obj) ? obj.prop : defaultValue
Why is object key pair with null value not passed from server to client anymore?
Issue:
If null
is a value for a key
in a object, the key-value pair is lost when the object is passed from server to client, though null
is a legal parameter.I can confirm the issue.
Solution:
The issue is reported here. Add a star to the issue, if anyone else has the same issue.
As a typical workaround for illegal parameters, Use JSON.stringify()
on the server side, pass the string
to the client and JSON.parse()
it client side to get nulls inside a object.
Server:
function returnObject(){
return JSON.stringify({a:1,b:null,c:3});
}
Client:
document.addEventListener("DOMContentLoaded",
function(event) {
google.script.run
.withSuccessHandler(afterDataReceived)
.returnObject()
});
function afterDataReceived(receivedData){
console.log(JSON.parse(receivedData));
}
Related Topics
File Upload PHP $_Files Undefined Index Error
PHP MySQL Character Set: Storing HTML of International Content
Get Request from PHP Using File_Get_Contents with Parameters
Check If Method Exists in the Same Class
Add Custom Columns to Admin Products List in Woocommerce 3
Modify HTML Attribute with PHP
How to Set Document Root to Be a Subdirectory Using .Htaccess and Not Vhost
.Htaccess Rewriterule: Two Domains Using Same Server and Directory
How to Determine If an Array Has Any Elements or Not
PHP - Hide Url (Get) Parameters
Adding User Custom Field Value to Order Items Details
Variable Variables in PHP - What Is Their Purpose
Utf-8 Characters in Preg_Match_All (Php)
How to Access MySQLi Connection in Another Class on Another Page