web-dev-qa-db-fra.com

Comment rendre le paramètre de fonction constant en JavaScript?

Ce que je veux faire, c'est utiliser autant de variables immuables que possible, réduisant ainsi le nombre de pièces mobiles dans mon code. Je veux utiliser "var" et "let" uniquement lorsque c'est nécessaire.

Cela ne fonctionnera pas:

function constParam(const a){
    alert('You want me to '+a+'!');
}

Des idées?

26
shal

Les paramètres de fonction resteront des liaisons modifiables (comme var) dans ES6, vous ne pouvez rien y faire. La meilleure solution consiste probablement à déstructurer l'objet arguments dans une initialisation const:

function hasConstantParameters(const a, const b, const c, …) { // not possible
    …
}
function hasConstantParameters() {
    const [a, b, c, …] = arguments;
    …
}

Notez que cette fonction aura une arité différente (.length), si vous en avez besoin, vous devrez déclarer certains paramètres d'espace réservé.

32
Bergi

Vous ne pouvez pas créer de paramètre const. Utilisez-le comme valeur initiale d'une variable locale:

function constParam(a) {
    const const_a = a;
    ...
}

Notez également que const est uniquement pris en charge dans Internet Explorer à partir de IE11. Voir ce tableau de compatibilité

12
Barmar

C'est ce que je fais:

Au lieu de:

function F(const a, const b, const c, const d, const e, const f, const g){ // Invalid Code
    // lorem
    // ipsum
}

..Utilisation:

function F(){const[a, b, c, d, e, f, g] = arguments;
    // lorem
    // ipsum
}
1
Pacerier

Nous pouvons utiliser la déstructuration ES6 pour créer des constantes à partir de paramètres

function test(...args) {
   const [a, b, c] = args;
}
0
Drenai
function wrapper(i){
    const C=i
    return new Function("a","b", "return a+b+"+C)    
}

f100 = wrapper(100) //ƒ anonymous(a,b/*``*/) {return a+b+100} 
f100(1,2) //OUTPUT 103

f200 = wrapper(200) //ƒ anonymous(a,b/*``*/) {return a+b+200} 
f200(1,2) //OUTPUT 203
0
sergey andriyaka