劝阻使用javascript中的增量运算符?

时间:2011-10-14 14:15:12

标签: javascript

我在一些JS库中看到过如下代码:

var i;
for (i = 20; i >= 0; i -= 1) 
{
}

我想知道为什么他们会选择以这种方式递减i。在javascript中使用++--会有问题吗?

4 个答案:

答案 0 :(得分:5)

增量和减量运算符在JavaScript中运行良好。很多人不使用它们,因为Crockford建议不要在他的书JavaScript: The Good Parts中使用它们。我一般都喜欢Crockford,但我确实觉得这个特别的建议有点严厉。我还没有看到任何令人信服的情况或证据表明它们是有害的。

答案 1 :(得分:3)

道格拉斯·克罗克福德(又名JavaScript的教父)不鼓励++

  

混淆优缺点

     

小心不要跟+ + + + +。这种模式可以   混乱。在它们之间插入parens以使你的意图清晰。

total = subtotal + +myInput.value;
     

最好写成

total = subtotal + (+myInput.value);
     

这样+ +就不会被误读为++。

就个人而言, - 或者++在for循环中完全没问题,因为它的含义非常明确。我倾向于遵循Crockford的大部分指导方针,因为它通常是JS惯例的基础。

查看更多here

答案 2 :(得分:0)

我认为循环,增量和减量运算符并不是真正有害的(从我所见过的)但你不应该在循环之外使用它。

答案 3 :(得分:0)

正如其他人指出的那样,道格拉斯·克罗克福德(Douglas Crockford)不赞成将其视为语言的不良功能,尤其是在他的《 JavaScript:好的部分》一书中。它可以用于创建容易遗漏的错误和难以推理的代码。

我将在这里看不到的是我引用的道格拉斯·克罗克福德(Douglas Crockford)的一段关于JavaScript的演讲:

  

例如++运算符,这是为B添加的功能   算术。从那以后,我们确定了点算术是有害的,   所以我们不再这样做了。现代语言不支持点   算术。最后一种使用点算术的流行语言是   C ++。一种非常糟糕的语言,以该运算符命名。但是   操作员拒绝死亡。甚至还在我们所有的语言中   尽管我们不再需要它来增加指针。

     

现在,我们使用它向变量添加一个。完全是   不必要。但是我们做到了。不幸的是,这导致了一种   您尝试编写单行程序的程序。您尝试在其中   拿一大堆东西,并尝试将其涂抹成一条线。   这导致了非常糟糕的代码。很难维护的东西   很难纠正。我们已经看到安全错误,缓冲区溢出,   这些东西。该运算符总是与那些   各种安全错误。 h

     

我在自己的实践中发现,无论何时何地使用++,   抓住我我无法控制。这让我想拿代码   并尝试将其降低到一行。即使我知道那是一个   愚蠢的事情,我无法控制自己。这件事掌握   我,然后开始写一些愚蠢的东西,以为我真的   聪明。最终我不得不停下来。我一点都做不到。一世   必须完全停止。

     

从现在起,我不再说++。是+ = 1。我可以放松这简单。一世   现在就可以编写好的程序。食物味道更好。一切都   大。有一阵子我以为是我。但是现在我   每次都推荐所有人+ = 1。 + = 1很棒。   好多了。

     

我一直听到人们说我希望能够写x ++   因为它意味着同一件事,而不是必须去...(模仿   我打不了...(模仿少打几下)   击键)我没有那么多时间! 除了打字   时间无关紧要。这是完全无关的。我们不花我们的   时间输入。   ++ x与x + = 1大致相同。

     

每次我看到有人在递增位置编写x ++时,我都必须   问这个冒号是否了解预提交和   提交后。这意味着我必须查看该程序中的每个++,   问他是否正确地做到这一点。他说对了吗? '原因   这是一个有点阅读障碍的东西,很难分辨   你把它们颠倒了。它仅会导致一次错误   一下子离开。但这足以导致错误。是真的   很难调试这些东西。

     

支持++的论点是它提高了可读性,这是   废话。它不会提高可读性。它改善了歧义。   它可以改善混乱,这是不希望的。

     

我正在重做一些代码,我看到了++ x; ++ x;那到底是怎么回事?   可能是复制和粘贴错误。除了代码   似乎在工作。更可能发生的事情是有人   做过++ x,然后其他人注意到一个问题   这里。所以他们又做了一次。如果原始代码说的是+ = 1,那么   显而易见的解决方案是+ = 2。

     

这提出了一个问题,为什么我们认为我们需要完全不同的东西   将一个变量添加到变量中的语法比其他每个值都多?如何   那有意义吗?答案是没有任何意义。   有一种情感上的依恋   使我们感到++的语言就是我。这是我的一部分   上午。如果您从我身边拿走++,那我是什么?还剩什么? (呜咽)   免费,采用更严格的样式,可以处理许多错误   可以自动避免。

我几乎都同意(特别是我大胆提出的主要想法),并且在任何地方都没有使用++而不是+= 1的想法。