アロー関数式はどうすれば従来の関数宣言に直せますか?

関数の外側で this を定数に代入する必要があります。
2023年3月17日
ユーザー
drawFace() {
  for (let angle = 0; angle < 360; angle += 6) {
    this.drawer.draw(angle, ctx => {
      ctx.moveTo(0, -this.r);
      if (angle % 30 === 0) {
        ctx.lineWidth = 2;
        ctx.lineTo(0, -this.r + 10);
        ctx.font = '13px Arial';
        ctx.textAlign = 'center';
        ctx.fillText(angle / 30 || 12, 0, -this.r + 25);
      } else {
        ctx.lineTo(0, -this.r + 5);
      }
    });
  //...

上記記載部分のアロー関数をfunction(){}を使った通常関数に書き直して下記のようにすると、

this.drawer.draw(function(angle, ctx) {
...}

この下記部分の、

draw(angle, func) {
  this.ctx.save();

  this.ctx.translate(this.width / 2, this.height / 2);
  this.ctx.rotate(Math.PI / 180 * angle);

  this.ctx.beginPath();
  func(this.ctx);
  this.ctx.stroke();

  this.ctx.restore();
}

下記該当箇所が関数ではないというエラーが表示されてしまいます。

func(this.ctx);

以前教わったように、this を関数外で定数に代入して呼び出してみたりなど、試行錯誤して試みてみましたがうまくいきません。

どのあたりを確認して修正したらいいでしょうか。
よろしくお願いします。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(5)