搜尋

首頁  >  問答  >  主體

試著理解《Eloquent JavaScript》一書中程式碼片段的答案

這是 Eloquent JavaScript 第 3 章中的程式碼片段。

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

我是這樣向自己解釋的。但是我無法真正理解為什麼返回 1024 somoene 可以幫我分解它嗎?

/* 
    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));


*/

我期待結果 *= 基數,或結果 = 結果 * 基數。我知道我在迭代中遺漏了一些東西。

P粉986937457P粉986937457261 天前422

全部回覆(1)我來回復

  • P粉005417748

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

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

    看來你已經明白這個錯誤的後果了。請注意,count 變數僅用於控制迴圈的迭代次數。每次迭代時,您都會更新 result 變數以包含新值,方法是將其與 base 值相乘,然後將其用於下一次計算。所以就會是這樣的。

    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

    回覆
    0
  • 取消回覆