为什么不应该';我们使用++;用javascript?

为什么不应该';我们使用++;用javascript?,javascript,Javascript,可能重复: 我在一些地方听说不建议在javascript中使用+++&,我们应该使用+=1或-=1。有人能为我解释一下原因吗?我能想到的唯一好理由就是清晰。您不必担心以下情况: var result = ++i; 或: 因为道格拉斯·克罗克福德对事物的混乱程度有自己的看法。它们很好用,JSLint只是在表达他的观点。有人介意我提出相反的建议吗 请尽可能使用递增(++)和递减(-)运算符。要简单得多。(这就是他们在那里的目的。)我能想到的唯一原因是,与您编写的任何其他代码(html??)相比,

可能重复:


我在一些地方听说不建议在javascript中使用+++&,我们应该使用+=1或-=1。有人能为我解释一下原因吗?

我能想到的唯一好理由就是清晰。您不必担心以下情况:

var result = ++i;
或:


因为道格拉斯·克罗克福德对事物的混乱程度有自己的看法。它们很好用,JSLint只是在表达他的观点。

有人介意我提出相反的建议吗


请尽可能使用递增(++)和递减(-)运算符。要简单得多。(这就是他们在那里的目的。)

我能想到的唯一原因是,与您编写的任何其他代码(html??)相比,您的Javascript更容易被白痴编辑

所以对于一个noob来说

x=x+1 ;
它的可读性比

x++;

当和有经验的程序员打交道时,这真的没什么关系。

我唯一一次看到这些操作员被劝阻是在书中

引用“坏零件”附录:

递增运算符和递减运算符使以极其简洁的方式编写成为可能。在C等语言中,它们可以编写一行程序来复制字符串:

for (p = src, q = dest; !*p; p++, q++) *q = *p;

他们还鼓励一种编程风格,事实证明,这种风格是鲁莽的。大多数造成严重安全漏洞的缓冲区溢出漏洞都是由这样的代码造成的

在我自己的实践中,我观察到,当我使用
++
-,
时,我的代码往往太紧,太晦涩。所以,作为一个纪律问题,我不再使用它们了。因此,我认为我的编码风格变得更加清晰

此外,引用(他编写的代码质量工具):

众所周知,
++
(增量)和
--
(减量)操作符通过鼓励过度的欺骗来促成坏代码。在抵御病毒和其他安全威胁方面,它们仅次于有缺陷的体系结构。有一个plusplus选项禁止使用这些操作符

他真的不喜欢这些操作员。。。但是来吧!我认为我们仍然可以使用
++
--
操作符,而不必编写晦涩的代码。我使用它们,我喜欢它们。每个人都使用它们


请注意,尽管有禁止这些运算符的选项,但默认情况下不会启用此选项。

Crockford等人不鼓励使用
++
/
--
的原因是它们会产生副作用。实际上没有理由使用
i+=1而不是
i++++
很容易违反该规则


不鼓励使用
++
意味着我们不必在头脑中区分
i++
++i
。这意味着我们不太可能以聪明但令人困惑的方式使用它们。出于这些原因,不使用它们是一种很好的做法。

使用++,这是标准的,并且在那里有一个很好的环境

使用
++
/
-
可以限制js缩小选项,因为它们的含义对空格非常敏感。根据minifier的不同,它甚至可能在工作代码中引入错误。Crockford解释道(在警告部分)。

它们被解释为同一件事。你从哪里听说的?罪魁祸首确实是Crockford:)++和-,被包含在JS中是有原因的,我说,让我们使用它吧…@Elite
with
被包含在JS中也是有原因的。有人做出糟糕的语言决定并不是依赖它的理由。
with
并不完全可怕。除非你知道自己在做什么,否则它很少有用,最好避免,但vile可能有点推动它。永远不要使用你不懂的东西。请使用你理解的东西!(同样的事情也适用于
break
continue
,Delphi的
with
,以及我们在过去几周争论过的所有其他事情。)@Andreas这样的事情听起来不错,但实际上,有多少专业人士能够学习看穿每一个抽象层,理解从量子物理到GUI的系统?我相信每个人都应该努力学习他们工作的抽象层的操作模型的细节。我之所以说“努力”,是因为一般来说,你无法知道自己何时真正理解抽象层操作模型的每一个细节。@Andreas有一个更强有力的原则——永远不要使用容易被自己或他人误解的东西。
++i
i++
之间的区别就是一个很好的例子。为什么我们不使用一些更方便的语言元素,让C语法在第一时间变得如此酷呢?我并不介意
++
/
--
,我一直在使用它们。然而。我不确定我能不能更直截了当地称呼他们。考虑<代码> Va+A++B和<代码> var C+A++B。这三个变量都有不同的值,具体取决于您在此处放置空格的位置,这可能导致错误解释
var c=a+++b
@David Hedlund-true。有潜在的混乱。但是,“增量”操作符意味着增量。它的目的非常简单。在我看来,使用
+=1
=var+1
就像是在你想把某物翻一番而不是x*2的时候做x+x。对你的意思进行编码。x++/++xx++=1更简单的是什么。在我看来,后者和前者一样直截了当。如果我们已经有了可读且更灵活的语法来递增任何值,那么为什么只为递增(和递减)1添加特殊语法呢?
for (p = src, q = dest; !*p; p++, q++) *q = *p;