Home  >  Q&A  >  body text

Try to understand the answers to code snippets from the book Eloquent JavaScript

This is a code snippet from Chapter 3 of Eloquent JavaScript.

const power = function(base, exponent) {
  let result = 1;
  for (let count = 0; count < exponent; count++) {
    result *= base;
  }
  return result;
};
console.log(power(2, 10));
// 1024

This is how I explained it to myself. But I can't really understand why 1024 somoene is returned. Can you help me break it down?

/* 
    Explanation of code above.

     - We created a function named power. We used a function expression notation to create it. 
     
     - power has two parameters base and exponent.

     - the body of the function contains the code that the function will execute. 

    - the body does the following:

        1. declares a variable called result which has a value of 1.
        
        2. There is a for loop. Here are the parts of the for loop:

            - The intializer: the variable count is declared and assigned a value of 0

            - We are looking at the condition to see if it is truthy. The condition is whether count is greater than exponent. The loop will continue to iterate until this condition is truthy.

            - The incrementer: count will go up by 1 each iteration of the loop

            - The body of the for loop (the code to be executed) states that the result variable is equal to result *= base OR result = result * base 
    
    - then the function will return the value of result 

    - we are done with the function 

    - outside of the function we invoke it using console.log() and pass it the arguments 2 and 10 (base, exponent). 

    - The computer plugs the arguments into the function. The computer evaluates the condition in the for loop to see if its truthy. Basically, the computer asks is count < exponent? Count = 0 and exponent = 10. So the condition evaluates to falsey. 


    const power = function (2, 10) {
    let result = 1;
    for (let count = 0; 11 < 10; count++) {
                    1   10
                    2   10
                    3   10
                    4   10
                    5   10
                    6   10
                    7   10
                    8   10
                    9   10
                    10  10
                    11  10
                    
        result *= base; => 2 = 2 * 10
    }
    return result;

};

console.log(power(2,10));


*/

I'm expecting result * = base, or result = result * base. I know I'm missing something in the iteration.

P粉986937457P粉986937457181 days ago317

reply all(1)I'll reply

  • P粉005417748

    P粉0054177482024-04-03 11:52:44

    for(let count = 0; count < exponent; count++) {
      result *= base;
    }
    

    It seems that you already understand the consequences of this mistake. Note that the count variable is only used to control the number of iterations of the loop. On each iteration, you update the result variable to contain the new value by multiplying it with the base value and then using it for the next calculation. So it will be like this.

    1 * 2 = 2
    2 * 2 = 4
    4 * 2 = 8
    8 * 2 = 16
    16 * 2 = 32
    32 * 2 = 64
    64 * 2 = 128
    128 * 2 = 256
    256 * 2 = 512
    512 * 2 = 1024

    reply
    0
  • Cancelreply