JSLint错误:比较字符串时的奇怪关系

时间:2014-01-24 08:12:01

标签: jslint

有没有办法比较JSLint中的字符串?

我编写了以下由JSLint评估的代码:

if(('SIVA') === 'SIVA'){
    Result = 1000;
    return;
}

上面的代码适用于javascript但是我在JSLint评估时遇到以下错误:“奇怪的关系”

如何纠正这个问题?

3 个答案:

答案 0 :(得分:2)

解决方案可能非常简单。

您的后端代码正在将字符串写入JavaScript,对吧?所以不要这样:

if( ( 'SIVA' ) === 'SIVA' ) {
  result_int = 1000;
  return;
}

后端的内容如下:

if( ( '<%key_code%>' ) === 'SIVA' ) {
  result_int = 1000;
  return;
}

在后端模板上执行此操作:

var key_code = '<%key_code%>';

if( key_code === 'SIVA' ) {
  result_int = 1000;
  return;
}

将在客户端填写:

var key_code = 'SIVA';

if( key_code === 'SIVA' ) {
  result_int = 1000;
  return;
}

传递给客户端的模板和代码都应该传递JSLint。

答案 1 :(得分:1)

不确定你要在这里做什么。您将静态字符串与带有('SIVA') === 'SIVA'的静态字符串进行比较,这给出了一种奇怪的关系。

如果您将'SIVA''SIVA'进行比较,那么它将永远为真。为什么使用if来判断true是否为真?那真是怪了!这就是JSLint报告“怪异条件”的原因。 ; ^)

我假设您希望其中一个SIVA成为变量,我在下面的代码中进行了更改。

这里的代码类似于我认为你正在做的传递JSLint的代码。

/*jslint sloppy:true, white:true, browser:true */
var Result, sivaValueToCheck;

if(sivaValueToCheck === 'SIVA'){
    Result = 1000;
    // return;  // don't exit early.  configure your else.
}    else    {
    window.alert('do the logic you wanted to skip before');
}

请注意,您必须声明Result,如果要传递JSLint,则不能简单地return。您可以讨论单个返回规则的有用性,但想法是单个返回使得更容易遵循代码。

答案 2 :(得分:0)

Javascript接受if('a'=='a')但由于weird_relation属性,JSLint不允许它。如果从消息中删除了weird_relation属性,并且如果从使用它的方法中删除它,它将不会显示任何错误。我这样做了,它开始工作。