“Bad Line Breaking”在使用“use strict”后是否已经过时?

7

请假设 'use strict'; 并且假设 JSLint 已开启,不能忽略错误。

我发现运算符和以 ',' 开头的列表更易读,例如:

var i = 0
    , j = 1
    , someLongVariablename1
    , someLongVariablename2
    , someLongVariablename3
    , someLongVariablename4;

 if( (
     'dcr' === cmd
      && (action)
      && ('get' === actionHttp || 'post' === actionHttp )
      && whatever
   ) { ... }

因此,我的问题是:
使用"use strict"后,“不良换行”是否已经过时?
编辑:'use strict';不会阻止执行错误的代码。它可以防止执行某些类型的错误。
我发现JSLint和JSHint对待错误的换行方式不同。 JSHint更加友好地支持我喜欢的语法。
因此,这可能是其他人解决此问题的方法。
1个回答

5

不幸的是,严格模式并不能禁用自动分号插入这个可怕的东西,因此“错误”的换行依然是一个问题。例如:

(function() {
  "use strict";

  console.log(foo());

  function foo() {
    var a = 1, b = 2;

    return
    a + b;
  }
})();

实时示例 | 源代码 (您需要打开控制台并查看)

这仍然记录了undefined而不是3,因为ASI生效并在foo中的return后添加了分号。


我们在JSLint中使用非常严格的设置。你写的代码是一个完全的JSLint反模式,因为JSLint给出了三个错误:
  • 预期分号错误
  • 不可达代码错误
- Ron Wertlen
1
我编辑了这个问题:我假设严格使用 JSLint,以便如果存在 JSLint 错误,则不会继续执行。然而,这确实使问题变得复杂... 最初是一个简单的问题,你的答案是正确的。我标记你的答案为正确。 - Ron Wertlen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接