JavaScript function with optional parameters
本问题已经有最佳答案,请猛点这里访问。
我是来自Python背景的JavaScript的新手。 在Python中,参数可以作为键和值传递:
1 2 3 4 | def printinfo( name, age = 35 ): print"Name:", name print"Age", age return; |
然后可以这样调用该函数:
1 2 | printinfo( age=50, name="miki" ) printinfo( name="miki" ) |
这些参数可以在JavaScript函数中传递吗?
我希望能够传递一个或多个参数。 例如一个JavaScript函数:
1 2 3 | function plotChart(data, xlabel, ylabel, chart_type="l"){ ... } |
我希望能够只传递数据和图表类型,标签是可选的,例如:
1 | plotChart(data, chart_type="pie") |
这可以用JavaScript吗?
执行此操作的一种好方法是为所有参数使用对象。就像是:
1 2 3 4 5 6 7 | 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 } |
然后当调用该函数时:
1 2 3 4 5 6 | plotChart({ data: 'some data', xlabel: 'some xlabel', ylabel: 'some ylabel', chart_type: '5' // This is optional }); |
一种方法是检查参数值是否为
1 2 3 4 5 | function plotChart(data, xlabel, ylabel, chart_type) { if (typeof chart_type === 'undefined') { chart_type = 'l'; } } |
此外,EcmaScript 2016(ES6)还提供默认参数。由于某些浏览器尚不支持此功能,您可以使用诸如babel之类的转换器将代码转换为ES5。
为了使它像你的python示例一样工作,你必须传递一个包含值而不是单个参数的对象。
1 2 3 4 5 6 | 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); } |
用法示例
1 2 3 4 | plotChart({ xlabel: 'my label', chart_type: 'pie' }); |
已经有很多答案,但我没有看到我认为最简单的解决方案。
1 2 3 | var myFunc = function(param1) { var someData = param1 ||"defaultValue"; } |
您可以检查参数是否已定义,以及硬编码到您的函数中。
例如
1 2 3 4 5 6 | var preDefined = function(param) { if(param === undefined) { param = preDefinedValue } /* Rest of code goes here */ } |
ETA:
ES6允许默认参数值(当我发布答案时没有意识到这一点)。
链接