• 递增递减运算符


      // 递增递减运算符
            //  ++     -- 

            // 作用:
            //    每次执行,会在存储的原始数值基础上,自增 或者 自减 1

            // 语法形式
            //    前缀语法形式    ++变量    --变量
            //        在当前位置先执行自增或者自减操作
            //        将执行完自增自减效果的新的数据数值,参与到程序的执行中 
            //    后缀语法形式    变量++    变量--
            //        在当前位置,先使用原始数据参与执行的执行
            //        程序执行结束之后,在下一个位置上,使用自增自减之后,新的数据,参数程序的执行
            //        当前位置是原始数据参与执行

            // var int1 = 100;

            // var int2 = 200;
            
            // 前缀语法
            // 在当前位置,先执行自增或者自减操作
            // 在int1存储原始数据100的基础上,自增1,结果是101
            // 使用 新的 数据101 参与程序的执行,因此,输出的自增之后的新数据101
            // console.log( ++int1 ); 
            
            // 后缀语法
            // 先使用原始数据参与程序的执行
            // 先使用原始数据,200,参与console.log()的执行
            // 此时 console.log() 输出的是原始数值200

            // 当前位置程序执行结束之后,下一个位置,会使用自增之后的数值201参与程序的执行
            // 执行后缀的当前位置,执行数据是原始数据
            // console.log( int2++ );   
            // 当前位置是int2++后 , 下一个位置 , 这个位置上,int2是201
            // 执行后缀语法的下一个位置,int2存储数据是执行后缀++效果之后的数据
            // console.log(int2);


            // 经典的面试题

            // var int = 0 ;

            // // 后缀语法,当前位置是使用原始数据参与程序的执行
            // // 原始数据是 0 
            // // 此时 赋值给 res 的数值 就是 0
            // // 输出 res 中存储数据的结果,就是0
            // var res = int++;

            // console.log(res);

            // var int = 0;
            // 前缀语法,先执行自增操作,int存储的数据从原始数据0,自增为数值1
            // 再执行赋值操作,将int存储的新数据,1赋值给变量res
            // 输出res,就是存储的数据1
            // var res = ++int;
            // console.log(res);

            // 小总结
            // 不管是前缀,还是后缀,只要是执行,一定会自增或者自减 1
            // 前缀是先执行自增自减操作,再执行其他操作
            // 后缀是先执行其他操作,再执行自增自减操作


            // 经典面试题

            var int = 0;
            console.log(int++); 
            console.log(++int); 
            console.log(int++); 
            console.log(++int); 
            console.log(int++); 

            console.log(int);
         
            // 最后一个执行++或者--的单元 这里叫当前位置
            // 之后的位置,都是自增或者自减程序执行的下一个位置
            // 那么不管前缀还是后缀,都会体现 ++ 或者 -- 执行结果之后的数据内容

            // 不管之前有前缀还是后缀
            // 当前console.log()程序执行的位置,是在下一个单元
            // 这里已经是下一个位置了
            console.log(int);  // 一定是 5


            // 经典面试题

            var int1 = 0;
    // 原始数值            0        1        2       3
    // 前缀/后缀          后缀     前缀     前缀     后缀
    // 参与运算的数值       0   +   2    +   3    +  3
    // 当前位置后的数值     1       2        3       4
            var res1 =   int1++ + ++int1 + ++int1 + int1++ ;

            console.log(int1);    // 4
            console.log(res1);    // 8






            var int2 = 0;

    // 原始数值            0        1       2        3        4         3
    // 前缀/后缀          后缀     前缀     后缀     前缀     后缀       前缀
    // 参与运算的数值       0   +    2   -   2    -   4    +   4    +    2
    // 当前位置后的数值     1        2       3        4        3         2

            // +号,-号,不影响int2的数值
            // 只是 ++ 和 -- 符号 影响 int2 的数值
            // 有一个 ++ int2 就+1 有一个 -- int2 就-1
            var res2 =  int2++ + ++int2 - int2++ - ++int2 + int2-- + --int2;

            console.log(int2);   // 2
            console.log(res2);   // 2

    // 总结
    // 有一个 ++ 就+1 有一个-- 就-1,是执行 自增自减的变量 改变1
    // 前缀,就是先 改变,用新的数值,参与运算
    // 和后缀就是, 先参与运算, 之后下一个位置上,再改变为新的数值
    // 运算中的 + 加号 或者 - 减号 影响的是 res 变量的结果,跟执行自增自减的int数值无关


            var int3 = 0;

    // 计算res3
    // 原始数值            0        1       2        1        0    
    // 前缀/后缀          前缀     后缀     后缀     前缀     后缀      
    // 参与运算的数值       1   -   1   +   2    -   0    +   0    
    // 当前位置后的数值     1       2       1        0        1    
            var res3 = ++int3 - int3++ + int3-- - --int3 + int3++;

    // 计算 int3 的时候, 不要看 加号 减号,就把int3,单独拿出来看 
    //     ++int3    int3++    int3--   --int3    int3++
    // 0    +1        +1         -1       -1       +1     ---  1 int3就是1

            console.log(int3);    // 1
            console.log(res3);    // 2


    // 总结:
    // 1, 变量的 ++ 或者 -- 没执行一次,变量存储的数据就会相应的 +1 或者 -1
    // var int = 0 ; int++ 数据+1  int-- 数据-1   --int 数据-1    int-- 数据-1
    // 最终 int 存储的数据会变为 -2

    // 2, 不管是前缀还是后缀,变量存储的数据,最终都是要发生改变的

    // 3, 前缀是当前位置就发生改变,改变后的新数值,参与程序的执行
    //    后缀是下一个位置发生改变,当前位置是原始数据参与程序的执行


    var a = 1.123;
    a++;
    a++;
    a++;
    a++;
    console.log(a);

    // 布尔类型 true 转化为数值1 然后执行 自增自减操作
    var b = true;
    b++;
    b++;
    b++;
    b++;
    console.log(b);

    // 布尔类型 false 转化为数值0 然后执行 自增自减操作
    var c = false;
    c++;
    console.log(c);

    // 字符串是纯数字字符串,也可以执行++或者--操作
    var d = '123';
    d++;
    console.log(d);

    // 不符合数字规范的字符串,执行++或者--,结果是NaN
    var e = '北京';
    e++;
    console.log(e);
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    angular运行报错“Cannot find module 'ng2-translate'.”
    切换分支
    下载angular项目报错[ERROR] ionic-app-scripts has unexpectedly closed (exit code 1).
    通过原生SQL判断数据是否存在
    多图合并一张长图脚本
    科大讯飞--新冠肺炎检测赛道第八分享
    Mysql定时任务
    Mysql导出数据结构 or 数据
    G6Editor 边的参数配置
    百度坐标转腾讯坐标
  • 原文地址:https://www.cnblogs.com/ht955/p/14019893.html
Copyright © 2020-2023  润新知