javascript - 在参数本身的默认函数参数中调用函数/方法?
问题描述
在函数的参数上调用函数或方法来初始化该函数的参数是一种好习惯吗?
例如,我想实现快速排序,我想在函数参数本身中定义数组的最左边和最右边的索引。
const quicksort = function(array, l = 0, r = array.length - 1) {
...
}
这被认为是好的做法吗?如果不是,为什么?
解决方案
我会避免它。就个人而言,我无法理解您希望首先使参数默认值可变。我希望在函数范围内声明变量,并且默认参数是文字常量。
除此之外,您应该考虑您的输入和失败标准。如果用 null 调用函数的标头中的 null 引用异常,您可以接受array
吗?如果您想优雅地处理这种情况,则无法协调读取array
标头中的任何属性。像这样的假设会导致错误。
我认为快速排序是一个很好的例子,说明它可能有用,但是当你真正考虑它时,这种做法有点草率。它没有那么有趣,但我认为如果你将责任分开一点,它会更干净:
const quicksort_helper = function(array, l, r) {
// implement your quicksort here
}
const quicksort = function(array) {
if (array === null) {
// exit gracefully
} else {
quicksort_helper(array, 0, array.length);
}
}
推荐阅读
- google-apps-script - 我可以在 GAS 中有多个 toast 吗?
- azure - Azure Log Analytics:如何同时显示 AppServiceConsoleLogs 和 AppServiceHTTPLogs?
- nestjs - 如何在 Nest JS 中实现 Retrace 分析工具
- python - 使用 np.arange 定义时缺少最终刻度线
- javascript - $refs resetFields 不是函数 AntDesign
- python - 如何使用具有自定义频率和数据折叠的熊猫滚动窗口
- go - 获取 Go 可执行文件 (hugo) 以运行英特尔 Galileo/Quark
- database - Mongo shell 聚合管道错误:“未知运算符:$nor”
- java - 解码无法正确解码
- elasticsearch - 如何忽略弹性搜索查询中的 number_format_exception 错误