web-dev-qa-db-ja.com

オプションのパラメータを持つJavaScript関数

Pythonバックグラウンドから来るJavaScriptは初めてです。Pythonでは、パラメーターをキーと値として渡すことができます。

def printinfo( name, age = 35 ):
   print "Name: ", name
   print "Age ", age
   return;

次に、関数を次のように呼び出すことができます。

printinfo( age=50, name="miki" )
printinfo( name="miki" )

そのようなパラメーターはJavaScript関数で渡すことができますか?

1つ以上のパラメーターを渡せるようにしたい。たとえば、JavaScript関数自体は次のとおりです。

function plotChart(data, xlabel, ylabel, chart_type="l"){
    ...
} 

データとチャートタイプのみを渡せるようにしたいのですが、ラベルはオプションです。

plotChart(data, chart_type="pie")

これはJavaScriptで可能ですか?

6
codeBarer

これを行う良い方法は、すべての引数にオブジェクトを使用することです。何かのようなもの:

function plotChart(options) {
  // Set defaults
  options.chart_type = options.chart_type || '1';

  // Check if each required option is set
  // Whatever is used by the data
}

次に、関数が呼び出されたとき:

plotChart({
  data: 'some data',
  xlabel: 'some xlabel',
  ylabel: 'some ylabel',
  chart_type: '5' // This is optional
});
14
Sam

1つの方法は、パラメーター値がundefinedであるかどうかを確認し、そうである場合は値を割り当てることです。

function plotChart(data, xlabel, ylabel, chart_type) {
  if (typeof chart_type === 'undefined') {
     chart_type = 'l';
  }
} 

また、EcmaScript 2016(ES6)は デフォルトパラメータ を提供します。一部のブラウザはまだこの機能をサポートしていないため、 babel などのトランスパイラーを使用してコードをES5に変換できます。

pythonの例のように機能させるには、個々のパラメーターの代わりに値を含むオブジェクトを渡す必要があります。

function plotChart(options) {
    var data = options.data;
    var xlabel = options.xlabel;
    var ylabel = options.ylabel;
    var chart_type = (typeof options.chart_type === 'undefined' ? 'l' : options.chart_type);
}

使用例

plotChart({
  xlabel: 'my label',
  chart_type: 'pie'
});
6
Miguel Mota

これに対する答えはすでにたくさんありますが、私がこれに対する最も簡単な解決策であると私が考えたものを見たことがありません。

var myFunc = function(param1) {
    var someData = param1 || "defaultValue";
}
3
Sinistralis

パラメータが定義されているかどうかを確認し、それを関数にハードコーディングできます。

例えば.

 var preDefined = function(param) { 
    if(param === undefined) { 
        param = preDefinedValue
     }
     /* Rest of code goes here */
 }

ETA:

ES6ではデフォルトのパラメーター値が許可されていました(回答を投稿したとき、これに気づいていませんでした)。

リンク

1
Mike