2017-10-09 7 views
0

私は例えば、デフォルトパラメータを多用したJavaScriptプロジェクトを書かれている:Rhinoからスクリプトを呼び出すときにjavascript関数にオプションのパラメータを設定する方法はありますか?

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

は、今私は、コマンドラインからの私のコードを呼び出したいです。私はRhino、Nashorn、Nodeを使ってみましたが、デフォルトパラメータに遭遇したときにエラーを投げます。 Rhinoでエラーがある:

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. 

は、私は、デフォルトの引数を取り除くために、すべての私のコードを書き換えることなく、コマンドラインからの私のプロジェクトを呼び出すことができますいくつかの方法はありますか?

おかげ

EDIT

:バージョン4からバージョン8へのNode.jsを更新した後、これは動作します。 node.jsを使用しますが、これがrhinoで可能かどうかはまだ分かりません。

+0

どのバージョンを使用しましたか?特に、ノードは長い間、デフォルトを処理する方法を知っています。 – Bergi

+0

私はrhino 1.7を使用しています。私のubuntuには古いバージョンのv4.2.6がインストールされています。だから、ノードを更新することはそのトリックです、ありがとう!可能な限り私はまだグローバル変数がたくさんあるので、rhinoを使う方が好きですし、ノードにはすべて同じことをやり直す必要があります。 –

答えて

1

デフォルトの引数の動作をコピーする方法はありますが、新しいバージョンのjavascriptほど読みにくくはありません。

一つだけの引数があなたの関数内undefinedチェックだろうがあれば、それを行うための簡単な方法、すなわち:一方

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

は、はあなたの関数は複数の引数が含まれている場合オブジェクトを入力として使用して、上記のようにundefinedの値を確認することをお勧めします。

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 
関連する問題