JS中的自增自减问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中的自增自减问题相关的知识,希望对你有一定的参考价值。

var num1=1;
alert(num1++);
alert(num1) ;这个是怎么运算的 哪位高手可以解释一下,输出来的是什么?

先说结果:第一个是1,第二个是2。
说明:num1++这种情况是先执行其它的,再执行自增,所以结果为1。第二个执行的时候,上一句alert已经整句执行完毕,即已经自增了,所以结果为2。追答

如果是alert(++num1),会先自增,再执行alert

追问

var num1=1;
alert(num1++); 这个不是应该是num1=num1++ 然后把num1=num1=1赋值。 最后num1=num1+1=1+1=2 第一个不是应该等于2吗?
然后第二个alert(num1)=1吧?

追答

三句是按顺序执行的

不会重新赋值1

第一执行完,num1=1

第二句,先alert(1),然后执行num1++,执行后num1=2。这个时候alert已经执行了。

第三句,alert(2)

参考技术A 我们难免会遇到要在js中拼串的同时对某变量进行自增或自减并作为参数拼接去的操作,所以在这里简单的讨论一下在这种场景下的变量自增和自减。  以前我一直使用的是(i+1)/(i-1)来完成此类操作,鉴于此方法是代码相对最多、最笨和最不狂拽酷炫叼炸天的,所以一直想换一种better的方法,从上面的测试结果来看++i/–i无疑是符合我的需求的,而i++和i–却查了那么一丢丢,因为这里也涉及到i++和++i的一些区别:

i++:先赋值再自加,先在i所在的表达式中使用i的当前值,后让i加1;
++i:先自加再赋值;让i先加1,然后在i所在的表达式中使用i的新值;
  从上面不难看出这些自增减表达式(i++、++i、i-–、–-i)含义蹊跷,非常容易弄错。它们把读和写这两种完全不同的操作,混淆缠绕在一起,把语义搞得乌七八糟,而含有它们的表达式,结果却可能取决于求值顺序。但是需要指出的是自增减表达式在两种情况下还是可以安全的使用的。一种是在for循环的update部分,比如for(int i = 0; i < 5; i++)。另一种情况是写成单独的一行,比如i++;。这两种情况是完全没有歧义的,所以你可以放心的使用,而你需要避免的是其它的情况,比如用在复杂的表达式里面。追问

我只想弄明白这个怎么运算的和输出来的结果.....

Java 运算符

基本运算:

+、-、*、/、%(取模)

 

自增自减:

++变量,--变量:先进行变量的自增/自减再使用变量进行科学计算

变量++,变量--:先使用变量进行科学计算,后实现自增自减操作

// 自增操作, num A = 11; result = 31;
public class Hello {
    public static void main( String args[]){
        int numA = 10;
        int numB = 20;
        int result = ++numA + numB;
        System.out.println("numA="+ numA);
        System.out.println("result=" + result);
    }
}

 

三目运算符:

数据类型 变量 = 布尔表达式 ? 值1 : 值2;

 

逻辑运算符:

与(&、&&)

或(|、||)

非(!)

& 和 && 的区别:&& 在得到了肯定结果之后不再往后执行,而 & 在现有条件已经可以做出判断之后还会执行剩下的判断

 

位运算:主要是进行二进制的数据操作

&、|、<<、>>、

以上是关于JS中的自增自减问题的主要内容,如果未能解决你的问题,请参考以下文章

通过反编译,看看Java的自增自减到底是怎么回事?

以php中的自增自自减运算符操作(整型,浮点型,字符串型,布尔型,空类型)数据

自增、自减运算符的使用?

JAVA自增自减运算符,i++,++i

在C语言中自增自减运算符有啥作用?

Java 运算符