你能举个例子说"以前坏线断线吗?"?

ryt*_*s42 12 javascript jslint

我有这个错误信息,我不喜欢.

Bad line breaking before '?'.
Run Code Online (Sandbox Code Playgroud)

我觉得像

var s = (a === b)
        ? 'one'
        : 'two';
Run Code Online (Sandbox Code Playgroud)

看起来更好.克罗克福德说:

分号插入可以屏蔽复制/粘贴错误.如果你总是在运算符之后断行,那么JSLint可以更好地找到这些错误.

有人能给我一两个例子,说明他所指的那种复制/粘贴错误吗?

更新:

var s = (a === b)
        ? 'one'
        : 'two';
Run Code Online (Sandbox Code Playgroud)

看起来比

var s;
if(a === b) {
    s = 'one';
} else {
    s = 'two';
}
Run Code Online (Sandbox Code Playgroud)

nnn*_*nnn 10

(根据要求,我的评论重新发布为答案:)

您显示的示例中的"明显"复制/粘贴错误是复制第一行:

var s = (a === b)
Run Code Online (Sandbox Code Playgroud)

...当然这本身就是有效的代码,但显然不会像三条线那样做同样的事情.人们希望人们在复制一行之前先查看周围的代码,但你永远不会知道.

我认为Crockford先生试图做的一点是,如果你故意将一个多行表达式分开,使得各行不是自己的有效代码,那么如果你不小心只复制了表达式的一行,那么将其粘贴到其他位置时可能会导致语法错误.这很好,因为浏览器和/或JSLint/JSHint会报告语法错误,因此如果您复制/粘贴自己有效的行,则比创建的更微妙的错误更容易找到.因此,如果你像克罗福德建议的那样"总是在经营者之后打破界限":

var s = (a === b) ? 
        'one' : 
        'two';?
Run Code Online (Sandbox Code Playgroud)

...那么三元的唯一一行就是它自己的有效代码(第三个)看起来并不完整,所以如果自己粘贴就更容易被发现是一个错误,因为它显然不会自己做任何事情 - 由于同样的原因,它不太可能首先被自己复制.

(话虽如此,我并没有在我自己的代码中强调三元运算符,我认为上面的内容看起来很难看.我在一行上放了一个短的三元表达式,在两行之间放一个较长的表达式,在中间的后面换行操作数和:排在?下面,或者像你这样的三条线上很长的一条.)