Pet*_*tai 7 javascript line-breaks
在紧密的括号中打破一长串代码有什么危险?
何时可以通过Javascript自动插入分号(可能是危险,对吧?).
为什么使用)JSLint作为线路断路器"不赞成"?
在Javascript中,我有时会看到一长串代码被破坏)(例如):
function ()
{
Run Code Online (Sandbox Code Playgroud)
或者像这样(例子):
object.methodOne()
.methodTwo();
Run Code Online (Sandbox Code Playgroud)
作为对分号插入机制的进一步防御,JSLint期望只有在其中一个标点字符或运算符之后才能打破长语句:
, ; : { } ( [ = < > ? ! + - * / % ~ ^ | &
== != <= >= += -= *= /= %= ^= |= &= << >> || &&
=== !== <<= >>= >>> >>>=
Run Code Online (Sandbox Code Playgroud)
JSLint不期望在标识符,字符串,数字,更接近或后缀运算符后看到长语句被破坏:
. ) ] ++ --
Run Code Online (Sandbox Code Playgroud)
因此,将紧密括号单独列为JSLint"不希望看到的"线路断路器.
我更愿意使用
function()
{
Run Code Online (Sandbox Code Playgroud)
因为我发现它更具可读性,而且我已经在其他语言中使用它,但目前我使用:
function () {
Run Code Online (Sandbox Code Playgroud)
我可以安全地使用它)来分解长线吗?
小智 4
这个链接应该解释一切:
“危险”是(取自上面的链接,强调):
语法中有五种限制产生式,它们是后缀运算符++ 和 --、continue语句、break语句、return语句和throw语句。
function()不在那个“危险”名单中。然而,在编写分号自由代码时(我不确定这是否是您的目标:-),应该防止以字符开头的行(例如(or [),它们可能会开始或继续表达式。以下代码显示了可能错误的代码示例:
x()
(function (){...})()
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,用作)换行符可能会使表达式能够在没有显式分号的情况下巧妙地继续下去,前提是下一行可以继续该表达式。我将程序写为(如果确实是以下意图):
x()
;(function (){...})()
Run Code Online (Sandbox Code Playgroud)
就我个人而言,我不喜欢 JSLint :-) 快乐编码。