Eloquent JavaScript - Chapter 3 Flashcards

1
Q

What is the output of the program below? Why?

function halve(x){
	return x / 2;
}
let x = 10;
console.log(halve(100));
// →
A
  1. Even though x is set to 10 globally, it occurs outside of the function code block locally and is thus is out of the function’s scope.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Explain this program and what is it an example of?

const hummus = function(factor) {
const ingredient = function(amount, unit, name) {
let ingredientAmount = amount * factor;
if (ingredientAmount > 1) {
unit += “s”;
}
console.log(${ingredientAmount} ${unit} ${name});
};
ingredient(1, “can”, “chickpeas”);
ingredient(0.25, “cup”, “tahini”);
ingredient(0.25, “cup”, “lemon juice”);
ingredient(1, “clove”, “garlic”);
ingredient(2, “tablespoon”, “olive oil”);
ingredient(0.5, “teaspoon”, “cumin”);
};

A

This program is demonstrating “lexical scoping”. This means that the variables in the inner levels of the code can access the outer levels. Notice how console.log(‘{ingredientAmount} is called outside of the scope of the function - since it is wrapped in the hummus function it is still with scope.

This program takes a factor(how much hummus to make) and based on that calculates and outputs the amount of ingredients necessary to craft.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q
function printFarmInventory(cows, chickens) {
  let cowString = String(cows);
  while (cowString.length < 3) {
    cowString = "0" + cowString;
  }
  console.log(`${cowString} Cows`);
  let chickenString = String(chickens);
  while (chickenString.length < 3) {
    chickenString = "0" + chickenString;
  }
  console.log(`${chickenString} Chickens`);
}
printFarmInventory(7, 11);
A
// You want to start with thinking that input will be received or that you will input 
// data for the numbers of cows and chickens.  Then you create a function for that. The while loops
// are simply adding 0's if the number input is less than 3.  That way it's always 
// 3 digits long.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly