1. void 是一个不常用的运算符。
    2. void 运算符的作用是执行一个表达式,然后不返回任何值,或者说返回undefined
    1. var x = 3;
    2. void (x = 5) //undefined
    3. x // 5
    1. void 运算符的优先性很高
      1. 建议使用 void 时要加上圆括号,如果不使用括号,容易造成错误的结果
      2. 比如,void 4 + 7实际上等同于(void 4) + 7
    1. void 0 // undefined
    2. void(0) // undefined

    上面是void运算符的两种写法,都正确。因为 void运算符的优先性很高,因此建议使用 void 时,总是使用圆括号。

    1. void 可以用来获取真正的 undefined
    1. const undefined = 1
    2. const x1 = undefined
    3. const x2 = void(0)
    4. console.log(x1) // 1
    5. console.log(x2) // undefined

    由于 undefined 可以被重新定义,使用 void 0 是获取真正的 undefined 值的常见方法

    1. 可以在超链接 <a> 中使用 void 来阻止页面跳转。
    1. <script>
    2. function f() {
    3. console.log('Hello World');
    4. }
    5. </script>
    6. <a href="http://example.com" onclick="f(); return false;">Click Me!</a>

    上面代码中,点击链接后,会先执行onclick的代码,由于onclick返回false,所以浏览器不会跳转到 example.com。

    void运算符可以取代上面的写法:

    1. <a href="javascript: void(f())">Click Me!</a>

    下面是一个更实际的例子,用户点击链接提交表单,但是不产生页面跳转。

    1. <a href="javascript: void(document.form.submit())">
    2. 提交
    3. </a>

    如果在点击连接后,只需要实现阻止链接跳转的功能,而不需要执行其它任何操作,还可以进一步简化:

    1. <a href="javascript:void(0)">Click Me!</a>


    javascript:void(0)

    • 表示链接被点击时执行 js,但不进行任何实际的操作(即返回 undefined,所以页面不会跳转到新的 URL)。
    • 这种写法是一个长期以来的公认做法,开发者更熟悉这种写法。使用其他的值可能会让其他开发者感到困惑,大家都默认使用 0 就好。
    • 从语义的角度看,void(0) 更清晰地表示“我想执行一个没有实际效果的操作”。
    1. void 可用于 IIFE(立即调用的函数表达式)。
    1. void function() {
    2. // ...
    3. }();
    1. 使用 void 可以丢弃函数的返回值。
    1. function example() {
    2. return void someOtherFunction();
    3. }


    如果你有一个函数,它可能有一个返回值,但在某些情况下你不想返回这个值,你可以使用 void