非典型用于Javascript的++和 - 运算符

Geo*_*pty 4 javascript increment operators pre-increment decrement

如果我从Crockford的"Javascript:The Good Parts"中正确回忆起来,他并不赞成使用++或 - 运算符,但我也倾向于回忆他并没有提供一个特别强烈的反对它们的论据.

下面是这些运算符的使用,我发现这些运算符有助于保持我的代码尽可能简洁,特别是在处理返回-1的函数/方法时,0是第一个可能的有效返回值(以及正整数).我会对++和/或其他非典型用法感兴趣,这些用法有利于在有意义的情况下使用这些运算符.

认为这是为什么要避免JavaScript中的增量("++")和减量(" - ")运算符?而是它的必然结果:何时不能避免它们,而是将它们用于你的优势.当然我可能会弄错,可能有一些原因我不会想到为什么以下是充满危险的,尽管我觉得我很优雅 - 如果我遗漏了以下关于以下内容的次优,我我也想知道

var substrIdx = str.indexOf(substr);
if (++substrIdx) {
  doSomething(--substrIdx);
}
Run Code Online (Sandbox Code Playgroud)

Sco*_*t A 5

简洁与可读性或可维护性不同,优雅性在维护者的眼中.您发布的代码对我来说似乎不必要.

在过去的几十年里,我已经对代码产生了强烈的厌恶,即使显而易见的方法需要更多的代码,也不会立即明显.如果混合中不止一个人,隐含和魔法代码几乎总是不易维护.

具体评论:我不明白为什么你认为你的代码比以下更简洁,优雅或可读:

var substrIdx = str.indexOf(substr);
if (substrIdx >= 0) {
  doSomething(substrIdx);
}
Run Code Online (Sandbox Code Playgroud)

由于您执行两个操作和比较而不仅仅是比较,因此它的效率也稍微低一些.另外,你将一个整数误认为是一个布尔值,从维护的角度来看,这几乎总是一个坏主意.

最后,正如下面提到的那样,你会阻碍Javascript最小化,最后从简洁的角度来看,用户唯一关心的是页面加载速度有多快......