Por lo menos en algo así como V8¿Por qué es ilegal tener var dentro de una expresión if() en javascript?
if((var i = x*x) == 2){}
dará un error acerca de una palabra clave inesperada 'var'. Sin embargo, no hay ningún error si la var ocurre antes de if() pero aún dejo la asignación de i en la expresión. ¿Por qué una excepción tan extraña? ¿Está esto en el estándar de script de ECMA en alguna parte? ¿Hay un cierre indetectable ocurriendo dentro de la evaluación de la expresión if() por lo que dejar en la var haría desaparecer mi asignación?
Para generalizar más, parece que var
no debe tener caracteres de espacios en blanco que lo preceden.
Esto parece deberse a que 'var' es una palabra clave en el estándar ECMA-262 que se utiliza para identificar un VariableStatement, que es una declaración y no una expresión. –