¿Por qué la RegExp /^\w+$/
coincide con undefined
?
código Ejemplo:
alert(/^\w+$/.test(undefined));
Esto mostrará cierto en Firefox 3 (sólo navegador he comprobado en).
¿Por qué la RegExp /^\w+$/
coincide con undefined
?
código Ejemplo:
alert(/^\w+$/.test(undefined));
Esto mostrará cierto en Firefox 3 (sólo navegador he comprobado en).
Cuando undefined
se convierte en una cadena (lo que hace la expresión regular), produce la cadena "undefined"
, que luego se combina.
/(\w)(\w)(\w)(\w)(\w)/.exec(undefined);
devuelve: ["undef", "u", "n", "d", "e", "f"]
Se está tratando definido como la cadena "undefined"
.
Consulte la sección de especificación ECMAScript 15.10.6.2 para RegExp.prototype.exec (cadena) que se llamará desde el método .match. match básicamente es ejecutivo cuando se evalúa como verdadero.
Aquí es palabra por palabra de la especificación: Realiza una comparación de expresión regular de la cadena contra la expresión regular y devuelve un objeto Array que contiene los resultados del partido, o null si la cadena no ha producido El String toString (cadena) se busca una ocurrencia del patrón de expresión regular de la siguiente manera:
Como puede ver, se traducirá cualquier entrada a una cadena, por lo indefinido se convierte en 'indefinido' y que coincidirá con verdadero.
Probó esto también fuera del navegador utilizando JScript en la línea de comandos y obteniendo el mismo resultado.
Tiene sentido, aunque es un poco poco intuitivo. – cdmckay
Tal vez un poco ... pero no hay un concepto real de excepciones o algo así en JavaScript, un poco de comportamiento peculiar es mejor que morir silenciosamente. –
Bueno, hay errores (https://developer.mozilla.org/es/Core_JavaScript_1.5_Reference/Global_Objects/Error) ... – cdmckay