What exactly is the difference between undefined and  void 0 ?
Which is preferred and why?
What exactly is the difference between undefined and  void 0 ?
Which is preferred and why?
 
    
    The difference is that some browsers allow you to overwrite the value of undefined. However, void anything always returns real undefined.
undefined = 1;
console.log(!!undefined); //true
console.log(!!void 0); //false
 
    
     
    
    undefined has normal variable semantics that not even strict mode can fix and requires run-time look-up. It can be shadowed
like any other variable, and the default global variable undefined is not read-only in ES3. 
void 0 is effectively a compile time bulletproof constant for undefined with no look-up requirements. It is 
like writing null or true, instead of looking up a variable value. It works out of the box without any safety arguments and is shorter to write. It is better in every way.
 
    
    Use undefined. Its more commonly known than void(0).
 
    
    Parentheses here are optional, void 0, void(0) and void (0) are equivalent. The void is a unary operator with a right-to-left associativity, hence the value is placed at the right of it: 
void <VALUE>.
For second question, you need to use undefined directly while avoiding unneeded operand evaluation to retrieve the same undefined value. 
More info in the reference: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/void
 
    
    