【问题标题】:Javascript - Functions, missing argumentJavascript - 函数,缺少参数
【发布时间】:2020-09-01 05:17:30
【问题描述】:

这里是小程序员,刚刚进入函数。我创建了一个函数来计算矩形的面积,只要提供两个参数,它就可以工作。如果只提供一个参数,我希望我的代码假设形状是正方形(因此长度和宽度相等)。我一直在尝试提出一个条件,但不知道怎么说“如果只有一个参数,那么长度 === 宽度”。任何指针表示赞赏!

function area(length, width) {
    let rectangleArea = Number(length) * Number(width);
    return rectangleArea;
}
console.log(area(10, 5));

【问题讨论】:

    标签: javascript function arguments conditional-statements


    【解决方案1】:

    一种选择是为width 参数使用default function parameters,如果未传递,则将其设置为length

    function area(length, width = length) {
      let rectangleArea = length * width;
      return rectangleArea;
    }
    
    console.log(area(10, 5));
    console.log(area(10));

    默认函数参数是最近的一项功能。如果混淆,您可以检查width 参数是否为undefined 并将其设置为length

    function area(length, width) {
      if (typeof width === "undefined")
        width = length;
    
      let rectangleArea = length * width;
      return rectangleArea;
    }
    
    console.log(area(10, 5));
    console.log(area(10))

    此外,这里不需要Number() 包装器。你已经在传递数字了。即使您将字符串作为area("10", "5") 之类的参数传递,它们也会被强制转换为数字并相乘。

    【讨论】:

    • 我最终使用了第二个,只是为了避免让自己感到困惑,但我想我也理解第一个工作的原因。谢谢!
    • @tarabyte 不客气。如果答案解决了您的问题,请点击左侧的灰色复选标记mark it as accepted
    【解决方案2】:

    您可以使用默认参数width = length。如果width的值没有传递给函数,length的值将被赋值给width

    function area(length, width = length) {
        let rectangleArea = Number(length) * Number(width);
        return rectangleArea;
    }
    
    console.log(area(10, 5));
    console.log(area(10));
    console.log(area(5));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 2016-04-22
      • 2011-10-15
      • 2023-03-22
      相关资源
      最近更新 更多