Week 2 Additional Resources

Learning Objectives

  • Objects
    • Label variables as either Primitive vs. Reference.
    • Identify when to use dot notation (.) vs. bracket notation ([]) when
      accessing values of an object.
    • Use the obj[key] !== undefined pattern to check if a given variable that
      contains a key exists in an object.
    • Utilize Object.keys and Object.values in a function.
    • Iterate through an object using a for...in loop.
    • Define a function that utilizes ...rest syntax to accept an arbitrary
      number of arguments.
    • Use ...spread syntax for Object literals and Array literals.
    • Destructure an array to reference specific elements.
    • Destructure an object to reference specific values.
    • Write a function that accepts an array as an argument and returns an object
      representing the count of each character in the array.
  • Callbacks
    • Given multiple plausible reasons, identify why functions are called
      “First Class Objects” in JavaScript.
    • Given a code snippet containing an anonymous callback, a named callback,
      and multiple console.logs, predict what will be printed.
    • Write a function that takes in a value and two callbacks. The function
      should return the result of the callback that is greater.
    • Write a function, myMap, that takes in an array and a callback as arguments.
      The function should mimic the behavior of Array.map.
    • Write a function, myFilter, that takes in an array and a callback as
      arguments. The function should mimic the behavior of Array.filter.
    • Write a function, myEvery, that takes in an array and a callback as
      arguments. The function should mimic the behavior of Array.every.
  • Scope
    • Identify the difference between const, let, and var declarations.
    • Explain the difference between const, let, and var declarations.
    • Predict the evaluation of code that utilizes function scope, block scope,
      lexical scope, and scope chaining.
    • Define an arrow function.
    • Implement a closure and explain how the closure effects scope.