読者です 読者をやめる 読者になる 読者になる

みかづきブログ その3

3ヶ月つづけてみました。

JavaScriptのアローファンクション(アロー関数)ではargumentsがつかえないんですね 😳

JavaScript

先日、

var sum = (a, b) => {
  var total = a + b;

  return total;
};

sum(1, 2); // => 3

的な関数の引数を可変にしようとしまして、

var sum = () => {
  var total = 0;

  for (let i = 0, length = arguments.length; i < length; ++i) {
    total += arguments[i];
  }

  return total;
};

sum(1, 2);

としたら、

Uncaught ReferenceError: arguments is not defined

となりました。


😳


アロー関数式 は、function 式 と比べてより短い構文を持ち、this の値を語彙的に束縛します (ただし、自身の this や arguments, super, new.target は束縛しません)。アロー関数は、常に 匿名関数 です。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/arrow_functions より引用

developer.mozilla.org



なるほど。知りませんでした。


var sum = function () {
  var total = 0;

  for (let i = 0, length = arguments.length; i < length; ++i) {
    total += arguments[i];
  }

  return total;
};

sum(1, 2); // => 3

普通のfunctionにしたら無事に動くようになりました。