¿Cómo interpreta JS esta línea: if ("foo"[0] === "f"){} ? Se me ocurrieron dos versiones:
Versión 1:
JavaScript crea un objeto de cadena completamente nuevo que almacena "f" . Esto requeriría mucho más tiempo que la segunda opción, aunque en mi opinión esta versión se parece más a JavaScript que la otra.
Versión 2:
El lexer o el analizador de JavaScript convierten "foo"[0] en "f" . Debido a que no estamos hablando de inicializar o establecer el valor de una variable, no necesitamos almacenar la cadena completa y no necesitamos crear un nuevo objeto de cadena. El intérprete simplemente ejecuta if ("f" === "f") {} .
¿Cuál de las 2 versiones es la correcta? ¿Hay otra versión? También estoy feliz de leer las soluciones en otros idiomas.