“使用严格”是不是已过时?
Posted
技术标签:
【中文标题】“使用严格”是不是已过时?【英文标题】:Is "Bad Line Breaking" obsolete with "use strict"?“使用严格”是否已过时? 【发布时间】:2013-02-02 15:51:00 【问题描述】:请假设“使用严格”;并且还假设,JSLint 是开启的并且错误不能被忽略。
我发现运算符和 ',' 启动的列表更具可读性,
例如:
var i = 0
, j = 1
, someLongVariablename1
, someLongVariablename2
, someLongVariablename3
, someLongVariablename4;
if( (
'dcr' === cmd
&& (action)
&& ('get' === actionHttp || 'post' === actionHttp )
&& whatever
) ...
因此我的问题是: “使用严格”是否已过时?
已编辑:'使用严格';不会阻止坏行代码的执行。它可以防止某些类型的错误的执行。
我看到 JSLint 和 JSHint 对待坏换行的方式不同。 JSHint 对我喜欢的语法更加友好。
因此,对于正在研究此问题的其他人来说,这可能是一个解决方案。
【问题讨论】:
【参考方案1】:不幸的是,strict mode 并没有禁用 automatic semicolon insertion 的恐怖,因此“坏”换行符仍然是一个问题。例如:
(function()
"use strict";
console.log(foo());
function foo()
var a = 1, b = 2;
return
a + b;
)();
Live Example | Source(需要打开控制台查看)
这仍然会记录 undefined
而不是 3
,因为 ASI 会启动并在 foo
中的 return
之后添加一个分号。
【讨论】:
我们在 JSLint 中使用了非常严格的设置。你写的代码是一个完整的 JSLint 反模式,因为 JSLint 给出了三个错误: * expected ; error * 无法访问的代码错误 我编辑了问题:我假设严格使用 JSLint,因此如果出现 JSLint 错误,则不会继续执行。但是,这确实使问题复杂化了……最初是一个简单的问题,而您的答案是正确的。我标记你的答案是正确的。以上是关于“使用严格”是不是已过时?的主要内容,如果未能解决你的问题,请参考以下文章
Google Analytics Phonegap 插件已过时且无法正常工作