首页 > 解决方案 > 在参数本身的默认函数参数中调用函数/方法?

问题描述

在函数的参数上调用函数或方法来初始化该函数的参数是一种好习惯吗?

例如,我想实现快速排序,我想在函数参数本身中定义数组的最左边和最右边的索引。

const quicksort = function(array, l = 0, r = array.length - 1) {
    ...
}

这被认为是好的做法吗?如果不是,为什么?

标签: javascript

解决方案


我会避免它。就个人而言,我无法理解您希望首先使参数默认值可变。我希望在函数范围内声明变量,并且默认参数是文字常量。

除此之外,您应该考虑您的输入和失败标准。如果用 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);
    }
}

推荐阅读