JavaScript中的++ i和i ++有什么区别

时间:2011-06-16 21:10:40

标签: javascript

在我学习和改进我的JavaScript的过程中,我遇到了一个带有switch / case语句的脚本,我注意到一些变量在++之前使用++加上变量,然后一些变量在++之后变为++变量。这些有什么区别?这是我试图解释m和y变量的一个例子。

 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;
        }
        }

6 个答案:

答案 0 :(得分:37)

++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)

答案 1 :(得分:7)

与任何其他c风格++增量器的区别相同。

foo = ++i与:

相同
i = i + 1;
foo = i;

foo = i++与;

相同
foo = i;
i = i + 1;

答案 2 :(得分:3)

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

答案 3 :(得分:1)

在JS(以及C,Perl,可能还有十几种其他语言)中,++ i运算符在之前递增i 它评估语句,然后i ++将其递增。与 - 相同。

示例:

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

将显示“1”,但是:

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

将显示“2”。

答案 4 :(得分:0)

为了说明,假设:

var a = 1;

然后

var b = ++a;

结果

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

,而

var b = a++;

结果

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

答案 5 :(得分:0)

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

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

在这种情况下你真的应该使用i + = 1来提高可读性(Douglas Crockford说道。)