JavaScript `undefined` vs `void 0`

前端 未结 4 1144
一个人的身影
一个人的身影 2020-11-28 08:52

What exactly is the difference between undefined and void 0 ?

Which is preferred and why?

相关标签:
4条回答
  • 2020-11-28 09:46

    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.

    0 讨论(0)
  • 2020-11-28 09:48

    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
    
    0 讨论(0)
  • 2020-11-28 09:48

    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

    0 讨论(0)
  • 2020-11-28 09:52

    Use undefined. Its more commonly known than void(0).

    0 讨论(0)
提交回复
热议问题