2011-06-16 66 views
8

对我追求学习和提高JavaScript的要求我遇到了一个有switch/case语句的脚本,我注意到一些变量在++,然后一些变量在变量之后有++。这些有什么区别?下面是我想要解释的m和y变量的示例。++ i和i ++在JavaScript中有什么区别

switch(f){ 
     case 0:{ 

      ++m; 
      if(m==12){ 
       m=0; 
       y++; 
      } 
      break; 
     } 
     case 1:{ 

      --m; 
      if(m==-1){ 
       m=11; 
       y--; 
      } 
      break; 
     } 
     case 2:{ 

      ++y; 
      break; 
     } 
     case 3:{ 

      --y; 
      break; 
     } 
     case 4:{ 

      break; 
     } 
     } 
+0

的可能重复[++ someVariable比。在Javascript中有些变量++](http://stackoverflow.com/questions/3469885/somevariable-vs-somevariable-in-javascript) – eldarerathis 2011-06-16 21:16:52

回答

32

++i它已递增之后返回的i值。 i++在递增之前返回值i

++来到它的操作数之前时,它被称为“预增”运算符,并且在它被称为“后增值”运算符之后。

如果你对结果做了某些事情,这种区别就很重要。

var i = 0, j = 0; 

alert(++i); // alerts 1 
alert(j++); // alerts 0 

但有一件事要注意的是增量前即使i++返回值,但仍返回值已转换为数字后。

所以

var s = "1"; 
alert(typeof s++); // alerts "number" 
alert(s); // alerts 2, not "11" as if by ("1" + 1) 
+4

它们被称为前增量和后增量运算符。 – ninjalj 2011-06-16 21:13:24

+0

@ninjalj,好点。将编辑添加术语。 – 2011-06-16 21:14:17

+0

for循环中的预增或后增对循环是否有影响?这两种情况:对于(i = 0; i <5; i ++)而言,为 ;对于(i = 0; i <5; ++ i) – Mihailo 2017-10-12 09:06:45

1

在JS(以及C,Perl和大概打别的语言)中,++ i的操作使i 之前评估的声明,之后我++递增它。和 - 一样。

实施例:

var i=1; 
alert(i++); 

将显示 “1”,但:

var i=1; 
alert(++i); 

将显示 “2”。

4

与其他c型++递增器相同的区别。

foo = ++i相同:

i = i + 1; 
foo = i; 

foo = i++是一样的;

foo = i; 
i = i + 1; 
2
var i = 0; 
alert('i is ' + (++i)); // i is 1 

// i is now 1 

var i = 0; 
alert('i is ' + (i++)); // i is 0 

// i is now 1 
0

为了说明,假设:

var a = 1; 

然后

var b = ++a; 

导致

true === (b === 2 && a === 2) 

var b = a++; 

导致

true === (b === 1 && a === 2) 
0

++ i是预增量,我+ +是后递增。

如果您只是递增变量而不是同时使用结果,它们是等效的。

在这种情况下,你真的应该使用I +的可读性= 1(说道格拉斯·克罗克福德..)

相关问题