分享
三行代码  ›  专栏  ›  技术社区  ›  BigBadBenny

将同一函数的结果添加到不带临时变量的多个变量中

  •  0
  • BigBadBenny  · 技术社区  · 1 周前

    这就是我所拥有的:

    let num1 = 0;
    let num2 = 5;
    
    num1 += longFunction();
    num2 += longFunction();
    

    let num1 = 0;
    let num2 = 5;
    
    let _ = longFunction();
    num1 += _;
    num2 += _;
    

    但这增加了一个临时变量,在我看来这应该是一种代码味道。我永远不会用超过这两条线的。

    有没有一种方法可以不使用临时变量,而只调用一次函数?

    1 回复  |  直到 1 周前
        1
  •  2
  •   slappy    1 周前

    let num1 = 0;
    let num2 = 5;
    
    [ , num1, num2] = [longFunction(), num1, num2].map(
      (n, i, arr) => n + arr[0]
    )
    
    console.log(num1, num2);
    
    
    function longFunction() { return 5 }

    这个 是代码味道。


    这里有一个更“好”的。

    let num1 = 0;
    let num2 = 5;
    
    num2 = (num2 - num1) + (num1 += longFunction())
    
    console.log(num1, num2);
    
    
    function longFunction() { return 5 }

    分配给时 num2 ,它先发制人地减去 num1 单位2 ,然后加上 longFunction longFunction() 单位2

    写起来很有趣,但当然,别这样。