我檢查了JSLint下面的代碼:兩個錯誤,我在JSLint的獲得沒有很好的理由
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Reset textarea</title>
</head>
<body>
<textarea id="ta">
<p>Hello</p>
</textarea>
<input type="button" value="Reset" onclick="reset();">
<script>
function reset() {
var ta = document.getElementById('ta');
if (!ta.value || ta.value != ta.defaultValue && confirm('Are you sure?')) {
ta.value = ta.defaultValue;
}
}
</script>
</body>
</html>
而且我得到了以下錯誤:
預期「 !==',而是看到'!='。
由於textarea的值和默認值是類型string
的始終,那麼就比較之前沒有類型轉換,它使除了讓你的JS文件較大絕對沒有區別!
'& &'子表達式應該包裝在parens中。
爲什麼我要加括號時&&
具有更高precedence比||
?我可以簡單地刪除nested parentheses代替:
if (!ta.value || (ta.value != ta.defaultValue && confirm('Are you sure?')))
請糾正我,如果我錯了。
無論發生什麼,jslint總是會喜歡嚴格的比較。此外,後者由於短路而出現。這只是保證您獲得預期結果的一種方式。 – Seiyria
JSLint是對最佳實踐的解釋,儘管很多經驗已經進入定義它的主觀規則,並不一定與您對最佳實踐構成的想法保持一致。 – DaveParsons