我总是编写strict mode希望被屏蔽(或至少被强制告知要更改我的代码)与Javascript语言的问题,如使用弃用的方法或错误解释的语法.
但是我今天遇到了这个问题,我想知道是否有任何方法可以在浏览器中禁用分号插入,或者是否有类似于严格模式的'编译'时错误?
JS [H/L] int似乎没有能够接受JS解释器插入分号并标记它们以便我们减轻它的位置吗?
编辑
如果在关键字后面找到分号之前存在新行,则JShint和JSLint都会出错return.但是,我不知道有关自动插入的其他警告以及它们是否也被检测到.
无论如何,如果答案实际上解决了"禁用"部分,那将更具相关性.
关键字后面的表达式return必须始终与关键字在同一行开始,这与解释器无关,它是由 ECMAScript 标准定义的,这是语言的一个不好的部分,但如果您尊重 Douglas 描述的编写 JS 代码的规则克罗克福德,那么你就不会再遇到这种事了。
来自 Douglas Crockford 的《JavaScript:好部分》(附录 A.3 糟糕的部分):
JavaScript 有一种机制,可以通过自动插入分号来尝试纠正错误的程序。不要依赖于此。它可以掩盖更严重的错误。
有时它会在不受欢迎的地方插入分号。考虑在 return 语句上插入分号的后果。如果 return 语句返回一个值,则该值表达式必须与 return 位于同一行:
return
{
status: true
};
Run Code Online (Sandbox Code Playgroud)
这似乎返回一个包含状态成员的对象。不幸的是,分号插入将其变成返回未定义的语句。没有任何警告表明分号插入导致了程序的误解。如果将 { 放在上一行的末尾而不是下一行的开头,则可以避免该问题:
return {
status: true
};
Run Code Online (Sandbox Code Playgroud)
另请参阅 Douglas Crockford 的 JavaScript 代码约定:http://javascript.crockford.com/code.html
| 归档时间: |
|
| 查看次数: |
2183 次 |
| 最近记录: |