cated_and_obsolete_features)

##  In this article

  * Try it 
  * Syntax 
  * Description 
  * Examples 
  * Specifications 
  * Browser compatibility 
  * See also 

#  void operator

The **` void ` ** operator evaluates the given ` expression ` and then returns
[ ` undefined ` ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/undefined) .

##  Try it

##  Syntax

js

    
    
    void expression
    

##  Description

This operator allows evaluating expressions that produce a value into places
where an expression that evaluates to [ ` undefined ` ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/undefined) is desired.

The ` void ` operator is often used merely to obtain the ` undefined `
primitive value, usually using ` void(0) ` (which is equivalent to ` void 0 `
). In these cases, the global variable [ ` undefined ` ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/undefined) can be used.

It should be noted that [ the precedence ](/en-
US/docs/Web/JavaScript/Reference/Operators/Operator_precedence) of the ` void
` operator should be taken into account and that parentheses can help clarify
the resolution of the expression following the ` void ` operator:

js

    
    
    void 2 === "2"; // (void 2) === '2', returns false
    void (2 === "2"); // void (2 === '2'), returns undefined
    

##  Examples

###  Immediately Invoked Function Expressions

When using an [ immediately-invoked function expression ](/en-
US/docs/Glossary/IIFE) , the ` function ` keyword cannot be at the immediate
start of the [ statement ](/en-
US/docs/Web/JavaScript/Reference/Statements/Expression_statement) , because
that would be parsed as a [ function declaration ](/en-
US/docs/Web/JavaScript/Reference/Statements/function) , and would generate a
syntax error when the parentheses representing invocation is reached â if
the function is unnamed, it would immediately be a syntax error if the
function is parsed as a declaration.

js

    
    
    function iife() {
      console.log("Executed!");
    }(); // SyntaxError: Unexpected token ')'
    
    function () {
      console.log("Executed!");
    }(); // SyntaxError: Function statements require a function name
    

In order for the function to be parsed as an [ expression ](/en-
US/docs/Web/JavaScript/Reference/Operators/function) , the ` function `
keyword has to appear at a position that only accepts expressions, not
statements. This can be achieved be prefixing the keyword with a [ unary
operator ](/en-
US/docs/Web/JavaScript/Guide/Expressions_and_operators#unary_operators) ,
which only accepts expressions as operands. Function invocation has higher [
precedence ](/en-
US/docs/Web/JavaScript/Reference/Operators/Operator_precedence) than unary
operators, so it will be executed first. Its return value (which is almost
always ` undefined ` ) will be passed to the unary operator and then
immediately discarded.

Of all the unary operators, ` void ` offers the best semantic, because it
clearly signals that the return value of the function invocation should be
discarded.

js

    
    
    void function () {
      console.log("Executed!");
    }();
    
    // Logs "Executed!"
    

This is a bit longer than wrapping the function expression in parentheses,
which has the same effect of forcing the ` function ` keyword to be parsed as
the start of an expression instead of a statement.

js

    
    
    (function () {
      console.log("Executed!");
    })();
    

###  JavaScript URIs

When a browser follows a ` javascript: ` URI, it evaluates the code in the URI
and then replaces the contents of the page with the returned value, unless the
returned value is [ ` undefined ` ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/undefined) . The ` void `
operator can be used to return ` undefined ` . For example:

html

    
    
    <a href="javascript:void(0);">Click here to do nothing</a>
    
    <a href="javascript:void(document.body.style.backgroundColor='green');">
      Click