gpt4 book ai didi

javascript - 我无缘无故地在 JSLint 中遇到了两个错误

转载 作者:行者123 更新时间:2023-11-30 17:32:16 25 4
gpt4 key购买 nike

我在 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>

DEMO

我得到了以下错误:

Expected '!==' and instead saw '!='.

因为textarea的值和默认值都是string类型,所以比较之前没有类型转换,除了让你的JS文件变大之外,没有任何区别!

The '&&' subexpression should be wrapped in parens.

&&precedence 更高时,为什么要添加括号?比||?我可以简单地删除 nested parentheses而不是:

if (!ta.value || (ta.value != ta.defaultValue && confirm('Are you sure?')))


如果我弄错了,请纠正我。

最佳答案

JSLint 旨在生成更多人类可读的代码,使用编写 JSLint 的人定义的规则(这可能基于其他人的意见,但最终只是意见)

因此,!==!= 更具人类可读性,因为它明显表明比较是严格的。但是,您知道不同,因为 ta.valueta.defaultValue 实际上总是字符串,因此您不需要遵循 JSLint 的建议。

类似地,用括号括起 && 表达式使它更易于阅读,因为它清楚地表明了事物的运行顺序。虽然您可能知道优先顺序,但并不是每个人都能一目了然可能解释错了。

重申一下,JSLint 是建议和意见,而不是法律。

关于javascript - 我无缘无故地在 JSLint 中遇到了两个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22764620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com