Write a JavaScript function that changes behavior based on optional arguments
本问题已经有最佳答案,请猛点这里访问。
我想编写一个函数,它接受一个可选参数,并根据是否提供该参数来更改其行为。这是我第一个想到的方法:
1 2 3 4 5 6 7 | function foo(optionalArg) { if (optionalArg) { // do something with the optionalArg } else { // do something different } } |
这是最好的方法,还是有更安全/更好的方法?
编辑:如果你真的读了这个问题,你会发现它不同于"复制品",一些人声称这是。我知道如何为函数的参数提供默认值;当我第一次试图自己解决这个问题时,我发现了这些链接。但我不想知道怎么做。我正在寻找根据是否提供了参数来更改函数行为的最佳方法。
你的做法很好,但这里有一些建议。
1)在ES6中,如果没有提供默认参数,则可以使用该参数:
1 2 3 | function foo(optionalArg = 'something cool') { // have your function go about its business as usual } |
2)同上,但不使用ES6:
1 2 3 4 5 6 | function foo(optionalArg) { if (optionalArg === undefined) { optionalArg = 'something cool' } // have your function go about its business as usual } |
3)检查你的论点是否未定义,以避免误报:
1 2 3 4 5 6 7 | function foo(optionalArg) { if (optionalArg !== undefined) { // do something with the optionalArg } else { // do something different } } |
4)在else语句中放置较长的块以获得最佳可读性:
1 2 3 4 5 6 7 8 9 10 11 | function foo(optionalArg) { if (optionalArg !== undefined) { // do something with the optionalArg } else { // do something different // big // huge // grandiose // epic } } |
希望有帮助!
特异性通常更好,声明但未提供的论点不明确,因此您可以这样做:
1 2 3 4 5 6 7 | function foo(optionalArg) { if (optionalArg !== undefined) { // do something with the optionalArg } else { // do something different } } |
使用
如果参数显式设置为
1 | if (arguments.length > 0) { ... |
应该这样做,否则你可以使用:
1 2 | function foo(...args) { if (args.length > 0) { ... |
并收集您自己的数组,它将在箭头函数中工作:
1 2 | (...args) => { if (args.length > 0) { ... |