javascript - JS try/catch 生成 jshint 错误

标签 javascript jquery

关于为什么以下实现有效但被认为是 jshint 错误有什么建议吗?

try {
    map.childNodes.length;
} catch (err) {
    console.log(err);
}

我只是想在迭代之前看看childNodes是否有长度。

这里有类似的事情:

try {
    response.errors.length > 0;
    deferred.reject(response);
} catch (e) {
    deferred.resolve(response);
}

最佳答案

来自 JSHint 的警告是:

Expected an assignment or function call and instead saw an expression.

即使不使用try..catch,警告也会显示。 JSHint 让您知道 map.childNodes.length; 作为独立语句可能没有用,并且可能表明存在编码错误;也就是说,在大多数情况下,您希望对值执行某些操作,而不仅仅是将其作为独立语句进行访问。例如,使用(无用的)语句 5; 会收到相同的警告。

当然,有时将属性作为语句中的唯一行为进行访问可能会很有用。例如,如果您使用 Object.defineProperty 在属性上定义了 getter 函数,则访问该属性将触发该 getter 函数。但是,纯值语句更有可能是编码错误,因此 JSHint 会警告您有关可疑代码的信息。

也就是说,假设您担心 response.error 可能是一个错误值(undefinednull),您的方法可以改进>) 而不是对象:

if(response.errors && response.errors.length > 0) {
    deferred.resolve(response);
} else {
    deferred.reject(response);
}

关于javascript - JS try/catch 生成 jshint 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19643481/

相关文章:

jquery - 多个选择字段将 ajax 数据作为字符串传递

javascript - 在服务器上保存图像错误

javascript - 使用 javascript 生成视频缩略图

javascript - safari 和 chrome javascript 控制台多行

javascript - 使用 jQuery 在 ASP .NET 中动态添加/删除表行时出现问题

javascript - 页面加载时 jQuery 不工作

javascript - 如何转义 date-fns 格式的模式字母

用于在表单输入中查找乱码的 Javascript 脚本

jquery - 从第 0 行的数据源请求未知参数 '1'(JTable 问题)

JavaScript-不显示文本 Accordion 中的标题