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

        // 作用:
        //    每次执行,会在存储的原始数值基础上,自增 或者 自减 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);
posted on 2020-11-22 16:53  Tsunami黄嵩粟  阅读(186)  评论(0编辑  收藏  举报