Funkcja strzałkowa, a funkcja arguments.lengt

0

Czemu nie mogę użyć takiej funkcji w deklaracji strzałkowej?:

const add = () => {
    let result = 0;
    let args = arguments.length;
    
    for (let i = 0; i < args; i++) {
        result += arguments[i];
    }

    return result;
}

console.log(add(1, 2, 3));

Zwraca i coś takiego:

0[object Object]function require(path) {
    try {
      exports.requireDepth += 1;
      return mod.require(path);
    } finally {
      exports.requireDepth -= 1;
    }
2

Bo funkcja strzałkowa nie posiada argumentów.

0

@Freja Draco:
Ale już zwykła deklaracja funkcji zwraca mi oczekiwany wynik 6:

function add () {
    let result = 0;
    let args = arguments.length;

    for (let i = 0; i < args; i++) {
        result += arguments[i];
    }

    return result;
}

console.log(add(1, 2, 3));

Czemu w funkcji strzałkowej nie da się czegoś takiego zrobic?

2

@woks:

Funkcja strzałkowa może operować tylko na z góry zdefiniowanych argumentach. Nie można dowiązywać dodatkowych argumentów tak jak w funkcji klasycznej.

https://bedekodzic.pl/function-vs/

2

Ale możesz skorzystać z rest parameters

const add = (...args) => {
    let result = 0;
    for (let i = 0; i < args.length; i++) {
        result += args[i];
    }
    return result;
}
console.log(add(1, 2, 3)); // => 6

1 użytkowników online, w tym zalogowanych: 0, gości: 1