当前位置:  开发笔记 > 编程语言 > 正文

带有可选参数的JavaScript函数

如何解决《带有可选参数的JavaScript函数》经验,为你挑选了2个好方法。

我是来自Python背景的JavaScript的新手.在Python中,参数可以作为键和值传递:

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

然后可以这样调用该函数:

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

这些参数可以在JavaScript函数中传递吗?

我希望能够传递一个或多个参数.例如一个JavaScript函数:

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

我希望能够只传递数据和图表类型,标签是可选的,例如:

plotChart(data, chart_type="pie")

这可以用JavaScript吗?



1> Sam..:

执行此操作的一种好方法是为所有参数使用对象.就像是:

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
});



2> Miguel Mota..:

一种方法是检查参数值是否为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'
});


@torazaburo:这种模式在Ruby中几乎总是没问题,但是在JavaScript中你需要知道变量的潜在值,以防该值合法地在其域中具有一个虚假值.通常没关系,但你每次都需要考虑一下; `if(typeof(chart_type)=="undefined")chart_type ="1"`是安全的变体.
@torazaburo我不喜欢这种模式,因为在某些情况下你可能想要实际传递一个值为0的值*falsey*.我想这个问题很好,但我不想让事情复杂化.
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有