Search code examples
javascriptassignment-operator

Value returned by the assignment


Why does the regular assignment statement (say, x = 5) return the value assigned (5 in this case), while the assignment combined with a variable declaration (var x = 5) returns undefined?

I got the return values by executing these statements in the Chrome browser's Javascript console:

> var x = 5;
undefined
> y = 5;
5

Solution

  • That's the way the language was designed. It is consistent with most languages.

    Having a variable declaration return anything other than undefined is meaningless, because you can't ever use the var keyword in an expression context.

    Having assignment be an expression not a statement is useful when you want to set many variable to the same value at once:

    x = y = z = 2;
    

    It can also be used like this:

    x = 2*(y = z); // Set y = z, and x = 2*z
    

    However that is not the most readable code and it would probably be better written as:

    y = z;
    x = 2*z;