9 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void
10 - https://oreilly.com/javascript/excerpts/javascript-good-parts/bad-parts.html
14 The `void` operator takes an operand and returns `undefined`: `void expression` will evaluate `expression` and return `undefined`. It can be used to ignore any side effects `expression` may produce:
16 The common case of using `void` operator is to get a "pure" `undefined` value as prior to ES5 the `undefined` variable was mutable:
19 // will always return undefined
24 // will return 1 in ES3 and undefined in ES5+
30 // will throw TypeError in ES5+
37 Another common case is to minify code as `void 0` is shorter than `undefined`:
44 When used with IIFE (immediately-invoked function expression), `void` can be used to force the function keyword to be treated as an expression instead of a declaration:
48 void function(){ foo = 1; }() // will assign foo a value of 1
49 +function(){ foo = 1; }() // same as above
53 function(){ foo = 1; }() // will throw SyntaxError
56 Some code styles prohibit `void` operator, marking it as non-obvious and hard to read.
60 This rule aims to eliminate use of void operator.
62 Examples of **incorrect** code for this rule:
67 /*eslint no-void: "error"*/
82 This rule has an object option:
84 * `allowAsStatement` set to `true` allows the void operator to be used as a statement (Default `false`).
88 When `allowAsStatement` is set to true, the rule will not error on cases that the void operator is used as a statement, i.e. when it's not used in an expression position, like in a variable assignment or a function return.
90 Examples of **incorrect** code for `{ "allowAsStatement": true }`:
95 /*eslint no-void: ["error", { "allowAsStatement": true }]*/
105 Examples of **correct** code for `{ "allowAsStatement": true }`:
110 /*eslint no-void: ["error", { "allowAsStatement": true }]*/
118 ## When Not To Use It
120 If you intentionally use the `void` operator then you can disable this rule.