Yuki-Inui
@Yuki-Inui (裕貴)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

分割代入について

Q&A

Closed

困っている内容

タイトルの通りなんですが、分割代入がうまくいってなくて理由がわからないです。

let fractorial = (num) => {
  let j = 1;
  for(let i = 1; i <= num; i++){
    j *= i;
  }
  return j;
};


const EveryNumber = (fractorial(n)) => {
  let sum = 0;
  while(fractorial(n) > 0){
    sum += fractorial(n) % 10;
    fractorial(n) /= 10;
  }
  return sum;
};
//SyntaxError: Invalid destructuring assignment target

作りたい内容としては、ある数の階乗した値の格桁の合計を出す。
というものです。

console.logはつけてはいないのですが、nodeを実行すると上記のエラーが出てきてしまします。

どなたか解決策をいただけないですか?

0

1Answer

分割代入はどこですか?

(fractorial(n)) => { ... }

これでは関数定義になってないですよ。
fractorial(n)の部分は関数からの戻り値に置き換わって、例えば戻り値が123なら (123) => {...} みたいになってしまい、シンタックスエラーです。

こういうことをしたいのですかね?

const fractorial = (num) => {
  let j = 1;
  for(let i = 1; i <= num; i++){
    j *= i;
  }
  return j;
};

const sumdigits = (n) => {
  let sum = 0;
  while(n > 0){
    sum += n % 10;
    n = Math.floor(n / 10);
  }
  return sum;
};

console.log(sumdigits(fractorial(4)));
console.log(sumdigits(fractorial(5)));
0Like

Comments

  1. @Yuki-Inui

    Questioner

    返信ありがとうございます。
    先程

    (fractorial) => { ... }

    に変換したらエラーがなくなり、正常に動きました。

    やりたい内容は今書かれた内容であってます。
  2. 質問のクローズをお願いします。

Your answer might help someone💌