js函数参数推荐写法({param1,param2,...})编程语言函数(包括对象方法)参数值The方法大致可以分为两种:按顺序取值和按名称取值。一般编程语言都是按顺序取值,比如C、Java、JavaScript等,少数语言支持按名字取值,比如Groovy。1.按顺序取值按顺序一个一个取值,每个参数的顺序是固定的。constfunc=(param1,param2,...)=>{...}func(1,2,...)2。ValuebynameValuebyname,可以任意安排各个参数的顺序。以下语法不存在,它只是一个constfunc=(param1:value1,param2:value2,...)=>{...}func(param1:1,param2:2);//好的func(param2:2,param1:1);//okagain3.jsvaluebynameJavaScript语言本身不支持valuebyname,但是结合ES6的destructuringassignment,可以模拟函数参数valuebyname。constfunc=({param1,param2,...})=>{...}func({param1:1,param2:2,...});但是这样的话,如果不传参调用func()会报错,需要调用func({})来表示不传参。为了兼容这个方法,你可以这样做:constfunc=({param1,param2,...}={})=>{...}func();//okfunc({});//又好了4.为什么推荐使用namevalue的方式valuebyname最大的好处就是参数的顺序可以随意排列,有利于扩展,特别是对于API接口。例如:exportconstdialog=(title,content,confirmCallback,cancelCallback)=>{...}比如上面的函数中,大多数情况下我只使用content,confirmCallback,那么我需要这样做:dialog(null,'内容',()=>{...});如果我需要扩展一个参数图标,那么为了兼容之前的版本,只能在最后添加:exportconstdialog=(title,content,confirmCallback,cancelCallback,icon)=>{...}现在,在大多数情况下我只使用content、confirmCallback、icon,那么我需要这样做:dialog(null,'content',()=>{...},null,'icon');这样很麻烦,也不利于扩展。如果使用valuebyname方法,就很容易解决了:exportconstdialog=({title,content,confirmCallback,cancelCallback}={})=>{...}//extendediconexportconstdialog=({title,内容,图标,confirmCallback,cancelCallback}={})=>{...}dialog({content:'content',confirmCallback:()=>{...}});dialog({content:'content',icon:'icon',confirmCallback:()=>{...}});5.你可能的反驳有人可能会说你可以这样做:确认回调=内容;内容=标题;}...}对于这个方法,我只想说:兄弟,简洁一点不好吗?更多后续博客,查看https://github.com/senntyou/blogs作者:沈玉之(@senntyou)版权声明:免费转载-非商业-非衍生-保留署名(CreativeCommons3.0许可)
