javascript - array - ¿Por qué "typeof" no necesita paréntesis?
typeof php (1)
La typeof
clave typeof
representa un operador en la programación de Javascript
.
La definición correcta para el operador typeof
en la specification es:
typeof[(]expression[)] ;
Esta es la razón detrás del uso de typeof
como typeof(expression)
o typeof expression
.
Llegar a la razón por la que se ha implementado como tal probablemente sea para permitir que el desarrollador maneje el nivel de visibilidad en su código. Como tal, es posible usar una declaración condicional limpia usando typeof:
if ( typeof myVar === ''undefined'' )
// ...
;
O indicando una expresión más compleja usando el ()
por el bien de la legibilidad:
var isTrue = ( typeof ( myVar = anotherVar ) !== ''undefined'' ) && ( myVar === true ) );
EDITAR:
En algunos casos, el uso de paréntesis con el operador typeof
hace que el código escrito sea menos propenso a la ambigüedad.
Tomemos por ejemplo la siguiente expresión donde el operador typeof
se usa sin paréntesis. ¿Tipo devolvería el tipo del resultado de la concatenación entre un literal de cadena vacío y un número, o el tipo de cadena literal?
typeof "" + 42
Al observar la definición del operador indicada anteriormente y la precedencia de los operadores typeof
y +
, parece que la expresión anterior es equivalente a:
typeof("") + 42 // Returns the string `string42`
En este caso, usar paréntesis con typeof
traería más claridad a lo que está tratando de expresar:
typeof("" + 42) // Returns the string `string`
¿Hay alguna diferencia entre typeof (myVariable)
comparación con typeof myVariable
?
Ambos funcionan, pero viniendo de PHP, no entiendo por qué esta función puede usar paréntesis o no.