【问题标题】:WebStorm inspection on comma expression in ternary JavaScript operatorWebStorm 检查三元 JavaScript 运算符中的逗号表达式
【发布时间】:2016-11-03 12:12:26
【问题描述】:

我使用了很多三元运算符而不是 select case 语句。

据我所知,这些工作正常,但我现在从 WebStorm 收到很多检查警告,告诉我逗号表达式可能过于聪明,并可能导致细微的错误。还有关于从未使用分配的值的警告。

这是正确使用三元运算符还是为了安全起见我应该使用不同的东西?

u_avg < siteColorArray[0] ?
  (fillColor = '#FF6600', strokeColor = '#FF8C00') :
  u_avg < siteColorArray[1] ?
    (fillColor = '#FF8C00', strokeColor = '#FFB300') :
      u_avg < siteColorArray[2] ?
        (fillColor = '#FFB300', strokeColor = '#FFD900') :
        u_avg < siteColorArray[3] ?
          (fillColor = '#FFD900', strokeColor = '#FFFF00') :
          u_avg < siteColorArray[4] ?
            (fillColor = '#FFFF00', strokeColor = '#CDE30F') :
            u_avg < siteColorArray[5] ?
              (fillColor = '#CDE30F', strokeColor = '#9CC71E') :
              u_avg < siteColorArray[6] ?
                (fillColor = '#9CC71E', strokeColor = '#6AAA2D') :
                u_avg < siteColorArray[7] ?
                  (fillColor = '#6AAA2D', strokeColor = '#388E3C') :
                  u_avg >= siteColorArray[7] ?
                    (fillColor = '#388E3C', strokeColor = '#2E7D32') :
                    null;

WebStorm 不太喜欢它...

编辑:只是为了澄清事情。这在 Chrome 54+ 上运行良好,但我担心其他和较旧的平台可能不喜欢这样。

【问题讨论】:

    标签: javascript webstorm ternary code-inspection


    【解决方案1】:

    您需要为结果设置一些变量:

    var test = u_avg < ...
    

    【讨论】:

    • 但是变量 test 永远不会被使用。那岂不是增加了不必要的变量分配?
    • 只是更详细地回顾你所做的事情。在三元组中设置变量并不常见,通常它会将单个值返回给fillColor,然后你会为strokeColor 提供另一个单独的语句。它真的按照你的方式工作吗?
    • 是的。它在我的开发机器上的 Chrome 中运行良好。我在三元链之前声明了这两种颜色,然后在三元链之后将这些颜色分配给一个对象。我只是担心检查警告。
    • 刚刚查看了developer.mozilla.org/en/docs/Web/JavaScript/Reference/…,您的示例看起来不错(学习新知识!)。但它仍应将值返回给变量。
    • 以及是否有不喜欢这样的浏览器。
    猜你喜欢
    • 1970-01-01
    • 2011-09-09
    • 2011-07-21
    • 2013-01-23
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2011-03-11
    相关资源
    最近更新 更多