Using Objects for Lookups difference between bracket and dot notations

Tell us what’s happening:
What is the difference between
result = lookup[val] and result = lookup.val?

I tried result = lookup.val and it did not work but it did when I tried lookup[val].

Your code so far


// Setup
function phoneticLookup(val) {
  var result = "";

  // Only change code below this line
  var lookup={
    "alpha" : "Adams",
    "bravo" : "Boston",
    "charlie": "Chicago",
    "delta" : "Denver",
    "echo" : "Easy",
    "foxtrot" : "Frank",
    "" : undefined
  };
  result = lookup[val];

  // Only change code above this line
  return result;
}

// Change this value to test
phoneticLookup("charlie");

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/using-objects-for-lookups

Your code works for me. What error are you getting?

This…

lookup.val

…looks for a property named val on the lookup object. It will not work because there is no property named val on the object.

val is a parameter, a variable. Its value is dynamic. The variable name (the identifier val) is not itself a property on the object, but the value inside the variable can hold the name (string) of a property.

const getName = 'name';

const users = {
  name: 'John Doe',
  age: 34
}

users[getName]
// "John Doe"

users['age']
// 34

users.getName
// undefined

users[name]
// undefined