2017-10-09 3 views
0

J'ai écrit un projet javascript qui utilise beaucoup de paramètres par défaut, par exemple:Existe-t-il un moyen d'avoir des paramètres optionnels dans une fonction javascript lors de l'appel du script depuis Rhino?

function hello(x = true){ 
    ... 
} 

Maintenant, je veux appeler mon code de la ligne de commande. J'ai essayé d'utiliser Rhino, Nashorn et Node, mais ils lancent tous des erreurs lorsqu'ils rencontrent des paramètres par défaut. Dans Rhino l'erreur est:

js: "resource.js", line 6: missing) after formal parameters 
js: function hello(x = true){ 
js: ..................^ 
js: "resource.js", line 1: Compilation produced 1 syntax errors. 

Est-il possible que je peux appeler mon projet à partir de la ligne de commande sans avoir à réécrire tout mon code pour se débarrasser des arguments par défaut?

Merci

EDIT: après la mise à jour Node.js à la version 8 de la version 4, cela fonctionne. Je vais utiliser node.js mais je ne sais toujours pas si c'est possible sur rhino.

+0

Quelles versions avez-vous utilisées? Surtout noeud sait comment faire face à des défauts depuis longtemps. – Bergi

+0

J'utilise rhino 1.7, et il s'avère que mon ubuntu a installé une ancienne version de node - v4.2.6. Donc, la mise à jour du nœud fait l'affaire, merci! Je préférerais toujours utiliser rhino si possible car j'ai beaucoup de variables globales et le noeud m'obligerait à refaire tout ça aussi. –

Répondre

1

Vous avez toujours un moyen de copier le comportement des arguments par défaut, mais il ne sera pas aussi lisible qu'avec une version plus récente de javascript.

La façon simple de le faire si vous avez seulement un argument serait un undefined contrôle à l'intérieur de votre fonction, -à-dire:

js> function hello(x){ 
    > if (x === undefined) x = 5; 
    > return x; 
    > } 
js> hello() 
5 
js> hello(42) 
42 

D'autre part, si votre fonction contient plus d'arguments Je vous recommande d'utiliser un objet comme entrée, puis de rechercher une valeur undefined, comme ci-dessus:

js> function hello(args){        
    > if (args.x === undefined) args.x = 5;  
    > return args.x + "-" + args.y; 
    > } 
js> hello({y: 12}) 
5-12 
js> hello({x: 1, y: 42}) 
1-42