Dado que JavaScript tiene separadores numéricos ( _ , U+005F ), ¿por qué Number("3_0") devuelve NaN ? ¿No debería funcionar como Number("0x08") que devuelve 8?
Number.isNaN(Number("3_0")) // true Number.isNaN(Number(3_0)) // false Number("3_0") === 30 // false Number(3_0) === 30 // trueDe acuerdo con la especificación , existen algunas diferencias entre la sintaxis aceptada para los literales numéricos y la sintaxis aceptada para un valor de cadena cuando se convierte en un valor numérico.
Una de las diferencias es
Un StringNumericLiteral no puede incluir un NumericLiteralSeparator.
Si tengo que adivinar, la razón es que aceptar dichos caracteres cambiaría el comportamiento del código JavaScript válido existente, lo que podría dañar las aplicaciones en funcionamiento.