== Why is this an issue? The `void` operator evaluates its argument and always returns `undefined`. `void` allows using any expression where an `undefined` is expected. However, using `void` makes code more difficult to understand, as the intent is often unclear. [source,javascript,diff-id=1,diff-type=noncompliant] ---- if (parameter === void 42) { // Noncompliant // ... } doSomethingElse(void doSomething()); // Noncompliant ---- Instead of using `void` to get the `undefined` value, use the `undefined` global property. In ECMAScript5 and newer environments, `undefined` cannot be reassigned. In other cases, remove the `void` operator to avoid confusion for maintainers. [source,javascript,diff-id=1,diff-type=compliant] ---- if (parameter === undefined) { // ... } doSomething(); doSomethingElse(); ---- === Exceptions * `void 0` (or the equivalent `void(0)`) is allowed as it was a conventional way to obtain the `undefined` value in environments before ECMAScript 5. [source,javascript] ---- if (parameter === void 0) { // ... } ---- * `void` is allowed with immediately invoked function expressions. [source,javascript] ---- void function() { // ... }(); ---- * `void` is allowed with Promise-like objects to mark a promise as intentionally not awaited, as advised by https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/no-floating-promises.mdx[@typescript-eslint/no-floating-promises]. [source,javascript] ---- const runPromise = () => Promise.resolve(); void runPromise(); ---- == Resources === Documentation * MDN web docs - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void[`void` operator] * MDN web docs - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined[`undefined`] * MDN web docs - https://developer.mozilla.org/en-US/docs/Glossary/IIFE[IIFE (Immediately Invoked Function Expression)] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Remove this use of the 'void' operator. === Highlighting ``++void arg++`` ''' == Comments And Links (visible only on this page) === on 30 Sep 2016, 10:14:28 Elena Vilchik wrote: \[~ann.campbell.2] Hi! Could you finish this ticket? Thanks! (I'm struggling to define severity) === on 30 Sep 2016, 16:47:30 Ann Campbell wrote: \[~elena.vilchik] could you supply some code samples? === on 30 Sep 2016, 17:13:13 Elena Vilchik wrote: \[~ann.campbell.2] done === on 14 Mar 2017, 10:33:27 Elena Vilchik wrote: \[~ann.campbell.2] Hi! we added exclusion to this rule: ``++void 0++`` used as ``++undefined++``. Could you update main part of description, as it's outdated now. Thanks! endif::env-github,rspecator-view[]