Resolví el único desafío de freeCodeCamp que le pedía que convirtiera una instrucción Switch/Case en un objeto y accediera a las propiedades a través de variables, la solución fue result = lookup[val].
Inicialmente me equivoqué al hacer result = lookup.val.
Sé que tiene algo que ver con los corchetes, que se interpretan como cadenas, y que usas la notación de puntos cuando conoces las propiedades, mientras que los corchetes cuando no las conoces, pero no tengo una buena comprensión conceptual.
Obtuve la respuesta simplemente balanceándome en la oscuridad e intentando otras cosas, pero ¿alguien puede explicar por qué es un corchete versus un punto?