JavaScript 'undefined' vs ' void 0`


¿Cuál es exactamente la diferencia entre undefined y void 0?

¿Cuál es el preferido y por qué?

Author: Pacerier, 2011-04-19

4 answers

La diferencia es que algunos navegadores permiten sobrescribir el valor de undefined. Sin embargo, void(anything) siempre devuelve real undefined.

undefined = 1;
console.log(!!undefined); //true
console.log(!!void(0)); //false
 41
Author: duri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-19 13:26:27

undefined tiene una semántica variable normal que ni siquiera el modo estricto puede arreglar y requiere búsqueda en tiempo de ejecución. Puede ser sombreado como cualquier otra variable, y la variable global predeterminada undefined no es de solo lectura en ES3.

void 0 es efectivamente una constante a prueba de balas en tiempo de compilación para undefined sin requisitos de búsqueda. Es como escribir null o true, en lugar de buscar un valor variable. Funciona fuera de la caja sin ningún argumento de seguridad y es más corto para escribir. Es mejor en todos los sentidos.

 13
Author: Esailija,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-18 10:16:26

JS es muy flexible en la sintaxis, los paréntesis aquí son opcionales, void 0 y void(0) son equivalentes.

Para la segunda pregunta, necesita usar undefined directamente mientras evita la evaluación innecesaria del operando para recuperar el mismo valor undefined.

Más información en la referencia: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/void

 2
Author: user422039,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-03 14:35:57

Use undefined. Es más comúnmente conocido que void(0).

 0
Author: Daniel A. White,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-19 13:20:20