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で可能ですか?
これを行う良い方法は、すべての引数にオブジェクトを使用することです。何かのようなもの:
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
});
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'
});
これに対する答えはすでにたくさんありますが、私がこれに対する最も簡単な解決策であると私が考えたものを見たことがありません。
var myFunc = function(param1) {
var someData = param1 || "defaultValue";
}
パラメータが定義されているかどうかを確認し、それを関数にハードコーディングできます。
例えば.
var preDefined = function(param) {
if(param === undefined) {
param = preDefinedValue
}
/* Rest of code goes here */
}
ETA:
ES6ではデフォルトのパラメーター値が許可されていました(回答を投稿したとき、これに気づいていませんでした)。