, чтобы сохранить свой прогресс
не понимаю почему не работает первый вариант
//result=lookup.val;
result=lookup[val];
Потому что он в первом варианте пытается имеено получить свойство val. Это тоже самое что lookup["val"], то есть строчное значение "val". А во втором варианте запрашивается свойство по значению переменной val. То есть если val = "my_value", то будет получен lookup[val] === lookup["my_value"]