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;
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…