Durante este proceso, vi la siguiente pregunta de la entrevista:
De hecho, esta pregunta es muy simple, como [0, 1, 2]. filtro (booleano), pero no puedo dar una respuesta de inmediato.
Sé que el segundo parámetro de parseInt() está relacionado con números decimales. Sin embargo, dado que el segundo parámetro suele ser el parámetro predeterminado, las reglas de base de ESLint también se habilitan al escribir el proyecto. Pero con la regla habilitada, 10 se completa prácticamente como parámetro, ya que hay pocos casos en los que intervienen otros decimales. ...
Por lo tanto, es beneficioso estar familiarizado con la función parseInt(string, radix).
Volviendo al tema anterior, descomponerlo es devolver una matriz de los siguientes tres resultados de operación:
Para la función parseInt(), solo se reciben dos parámetros, por lo que el tercero parámetro En realidad, no hay ningún efecto, por lo que el resultado es ['1', '2', '3']. map (parseint) es:
Pero el objetivo de este artículo no es la respuesta. Debemos prestar atención a la función parseInt(string, radix) en sí.
Si usas ESLint con frecuencia, debes saber que tiene una regla relacionada con radix y parseInt().
Ponme un ejemplo. ¿Qué resultados imprimen?
¿Por qué debería escribir 57? ¿Es esto un error? Obviamente, en el navegador, parseInt('071 ') imprime 71.
No te preocupes, sabemos que la sintaxis octal que comienza con 0 no está permitida en modo estricto.
Pero lo que quizás no sepas es que, creo, antes de que se lanzara el estándar ES6, ECMAScript no tenía sintaxis octal. En cuanto a la notación octal como 071, solo la admiten todos los fabricantes de navegadores. Al igual que Object.prototype, __proto__ nunca ha sido una sintaxis estándar para ECMAScript, pero es compatible con todos los navegadores. La sintaxis estándar es Object.getPrototypeOf().
Volviendo al tema de parseInt(string, radix) y octal,
De acuerdo con la actitud de buscar la verdad, saqué artefactos antiguos para verificar y obtuve el resultado: IE8 y versiones inferiores parseInt (el resultado impreso de '071 ') es 57 (a continuación), mientras que las versiones IE9 y superiores son 71.
Con el rápido desarrollo de JavaScript, los fabricantes de navegadores se acercan al estándar y ya no insisten en su propio camino. En cuanto al navegador parseInt('071 '), el resultado impreso es 71, porque el motor JS del navegador actual analiza en función de 10.
Aunque estamos en 2022, todavía es compatible con navegadores antiguos (antiguos), por lo que el parámetro radix debe especificarse explícitamente. Esta sección utiliza un caso típico para ilustrar que el parámetro de base debe especificarse cuando se usa la función parseInt.
En JavaScript, hay cuatro sintaxis para representar números decimales:
Analiza una cadena y devuelve un entero decimal o NaN en la base especificada.
Pero tenga en cuenta que no todas las letras comienzan con NaN. Por ejemplo, el valor de retorno de Parseint ('A11 ', 12) es 1453. Porque después de exceder el número decimal, también se pueden usar letras para representar el número decimal correspondiente.
Entonces, cuando se usa parseInt para procesar el tipo BigInt, el valor de retorno final siempre es el tipo Número (la precisión se perderá durante el procesamiento) y la N final del tipo BigInt se descartará.
La razón es muy sencilla, como hemos comentado anteriormente. Cuando el primer parámetro de parseInt no es de tipo cadena, primero se llama al método BigInt.prototype.toString() para convertirlo en una cadena, es decir, 1024n.toString(), y el resultado es 1024.
Volviendo al tema al principio del artículo:
¿Puedes decirme la respuesta rápidamente en este momento?: [1, Nan, Nan].
Aproveché la oportunidad para comprender a fondo el método parseInt() y salí satisfecho.