有没有办法比较JSLint中的字符串?
我编写了以下由JSLint评估的代码:
if(('SIVA') === 'SIVA'){
Result = 1000;
return;
}
上面的代码适用于javascript但是我在JSLint评估时遇到以下错误:“奇怪的关系”
如何纠正这个问题?
答案 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属性,并且如果从使用它的方法中删除它,它将不会显示任何错误。我这样做了,它开始工作。