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

Mar*_*man 14 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;
        }
        }
Run Code Online (Sandbox Code Playgroud)

Mik*_*uel 39

++i返回i增加后的值. i++返回i递增前的值.

++它位于其操作数之前时,它被称为"预增量"运算符,并且当它被称为"后增量"运算符之后.

只有在对结果做某事时,这种区别才是重要的.

var i = 0, j = 0;

alert(++i);  // alerts 1
alert(j++);  // alerts 0
Run Code Online (Sandbox Code Playgroud)

有一点需要注意的是,即使i++在递增之前返回值,它仍然会在转换为数字后返回值.

所以

var s = "1";
alert(typeof s++);  // alerts "number"
alert(s);  // alerts 2, not "11" as if by ("1" + 1)
Run Code Online (Sandbox Code Playgroud)

  • 它们被称为预增量和后增量运算符. (4认同)

zzz*_*Bov 7

与任何其他c型++增量器的区别相同.

foo = ++i 是相同的:

i = i + 1;
foo = i;
Run Code Online (Sandbox Code Playgroud)

foo = i++ 是相同的;

foo = i;
i = i + 1;
Run Code Online (Sandbox Code Playgroud)