2014-01-24 59 views
0

有沒有辦法比較JSLint中的字符串?JSLint錯誤:比較字符串時出現奇怪的關係

我寫了下面的代碼是通過JSLint的評價:

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

上面的代碼適用於JavaScript,但我收到以下錯誤,當通過JSLint的評價:「奇怪的關係」

如何糾正這個問題?

+0

什麼版本的JSLint。當我做出的jsfiddle的嘗試JSHint(它使用的JSLint,我猜)的例子,我沒有得到任何麻煩:http://jsfiddle.net/fK7rw/1/ – HerrSerker

+0

http://jslinterrors.com/weird-relation/ – HerrSerker

+0

我正在使用當前版本的JSLint。我在www.jslint.com上測試過它,但我也遇到了同樣的錯誤。 – JavaUser

回答

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。

+0

@JavaUser這是你在找什麼,還是有別的?更好的是,如果這解決了您的問題,請您將其標記爲解決方案? –

+0

謝謝@JavaUser :) –

+0

啊,很好的電話。我的意思是,仍然存在一個*巨大的問題 - 如果OP真的使用像if((''<%key_code%>')==='SIVA'){'這樣的代碼,而不是將該比較與服務器上的靜態值進行比較,我覺得我們已經失去了他或她(這完全是濫用動態生成的JavaScript),但我很高興你能夠在那裏看到我的心理障礙。 ; ^) – ruffin

1

不確定你要在這裏做什麼。你將一個靜態字符串與一個靜態字符串進行比較,該字符串與('SIVA') === 'SIVA'相關,這給出了一個奇怪的關係。

如果您將'SIVA''SIVA'比較,它將始終爲真。爲什麼使用if來查看是否屬實?這很奇怪!這是JSLint報告「奇怪狀況」的原因。 ; ^)

我假設你想那些錫瓦斯的一個是一個變量,我在下面的代碼更改。

這裏的相似,我認爲你做的是通過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,你可以,如果你想不只是return通過JSLint的。您可以辯論單一回報規則的用處,但這個想法是,單一回報可以更容易地遵循代碼。

+0

括號內的內容不是靜態字符串,它來自後端。我正在使用這個條件來檢查表格中的數值,並使用用戶提供的數值 – JavaUser

+0

然後您需要讓我們看看您的實際代碼。 '('SIVA')'寫在你的問題中清楚地評估爲一個靜態字符串 - 我敢打賭它會導致你的JSLint錯誤。但我懷疑,從這個和你最近的另一個問題你可能會期待不同的行爲。無論你在你的問題*中有什麼是*你的代碼,那*是*什麼導致了JSLint錯誤,或者你需要讓我們看到「真實」的東西。 ; ^) – ruffin

+0

@ ruffin我提到的條件是基於用戶選擇動態生成的,但它不是真正的java代碼。這個條件被傳遞給jslint進行評估,並且除了這個由於weird_relation屬性在jslint.js.So我刪除了這個屬性,問題就解決了。 – JavaUser

0

的Javascript接受,如果( 'A' == 'A'),但JSLint的沒有允許它由於weird_relation財產。如果從消息中刪除weird_relation屬性,並且將它從使用它的方法中刪除,它不會顯示任何錯誤。我這樣做並開始工作。