【问题标题】:JavaScript assignment in return statementreturn 语句中的 JavaScript 赋值
【发布时间】:2020-12-18 14:45:00
【问题描述】:

我遇到过一段类似这样的 JS 代码:

let myFn = function(param) {
    if (param > 5)
        return param = 10; // <-- why?
    return param;
}

此代码有效,如果有人问,我不会假设。但是,我认为仅以常规方式返回值没有区别:

let p1 = 34;
let p2 = 5;

myFn(p1); // returns 10
myFn(p2); // returns 5
console.log(p1); // 34
console.log(p2); // 5

所以,问题是——这有什么原因吗?

【问题讨论】:

  • 没有理由这样做。代码的作者可能很困惑,或者这可能是已被删除的不同代码的残余。
  • 代码有效,因为表达式param = 10 的结果是10。除此之外,它并没有做太多。 developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…
  • 短版使用三元:let myFn = param =&gt; param &gt; 5 ? 10 : param;
  • 我见过人们做这种事情,我个人一直不鼓励它过于迟钝,但它会起作用,它会让一些人觉得很聪明

标签: javascript return variable-assignment


【解决方案1】:

,没有功能上的理由这样做。


由于param = 10的结果确实是10,所以没有 功能之间的区别;

return param = 10;
return 10;

benchmarking the code 时,返回赋值会减慢代码速度; 100% 对比 99.46%


我可以想象开发人员选择此选项的唯一原因是让更多开发人员知道该函数正在返回一个新值 param

因此,开发人员无需查找函数调用,而是可以看到该函数正在使用新的 10 值覆盖 param 变量。

【讨论】:

猜你喜欢
  • 2016-05-17
  • 1970-01-01
  • 2019-11-24
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 2011-10-30
相关资源
最近更新 更多