JavaScript 语法建议:自动格式化时前缀表达式的左侧无效

问题描述

我继承了一个代码库,又名“遗留代码”,我非常小心,不破坏任何东西。我在自动格式化时偶然发现了一个错误。

该函数的目的是对图表进行排序。我评论了我不明白的部分:

function sortChartBy(field,dir=1) {
    if(g_sortMethod != field){
        g_sortDir = 1;
    }
    g_sortMethod = field;
    g_sortDir = g_sortDir * -1 * dir;
    
    var ranks = g_chart["ranks"];
    var sortMethod = g_sortMethod;
    var sortDir = g_sortDir;
    
    var sortFunc = undefined;
    if(field == "release_date"){
        sortFunc = function(a,b){
            var aVal = a[sortMethod];
            var bVal = b[sortMethod];
            if(aVal == "1970-01-01") aVal = "9999--99-99";
            if(bVal == "1970-01-01") bVal = "9999-99-99";
            if(aVal < bVal) return -1 * sortDir;
            if(aVal > bVal) return  1 * sortDir;
            return 0;
        };
    }else{
        sortFunc = function(a,b){
      var aVal = a[sortMethod];
      var bVal = b[sortMethod];

      // ###### QUESTION HERE ########################################
      if (aVal == -1 && bVal !=- -1) return 1; 
      // 'bVal !=- -1' What does that mean? Why '-' directly after '!='

      if (aVal != -1 && bVal == -1) return -1;
      if (aVal < bVal) return -1 * sortDir;
      if (aVal > bVal) return  1 * sortDir;
      return 0;
        };
    }
    
    ranks.sort(sortFunc);
    renderChart();
}

我使用 IntelliJ 作为 IDE。当我使用自动格式时,'!=' 后的 '-' 减号将向右移动一个字符,将行显示为

if (aVal == -1 && bVal != --1) return 1; // Invalid left hand side in prefix expression

现在 Intellij 显示错误,指出 Invalid left hand side in prefix expression 并用红色错误下划线标记“1”。

我不明白为什么原始代码中有两个用空格 !=- -1 分隔的减号以及为什么 Intellij 将其格式化为错误。该代码在原始代码中似乎运行良好。我从未在 JavaScript 中见过 !=-。对我来说这似乎是无效的。

请解释为什么行 if (aVal == -1 && bVal !=- -1) return 1; 似乎工作正常,但随后会自动格式化为错误。

正确的代码应该是什么样的?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)