<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> </body> </html> <script> //JS运算符++i 与 i++; i++是先计算后改变自身的值,++i恰好相反,先改变自身,再参与式子运算 var i = 1; var sum = i++ + ++i + i++ + i++ + ++i; //计算i: 2 3 4 5 6 //式子sum 1 + 3 + 3 + 4 + 6 console.log(i + " " + sum); //根据以上分析,打印出来是6 17; //注:i++与++i;还有i--与--i;情况类似; //搞清楚加减以后,我们结合*(乘法), %(取余), /(除法)再来讨论 var i = 1; var sum = i + i++ * ++i - 300 / i++; //计算i: 1 2 3 4 //式子sum:1 + 1 * 3 - 300 / 3 console.log(i + " " + sum); // 根据以上分析,打印出来是4 -96;也说明计算机遵循先乘除,后加减的规则; var i = 1; var sum = i + 5 % ++i + i++ * ++i; //计算i: 1 2 3 4 //式子sum:1 + 5 % 2 + 2 * 4 console.log(i + " " + sum); // 根据以上分析,打印出来是4 10;也说明计算机遵循先乘除模(模,即:取余),后加减的规则; //接下来我们看看i++与++i在传参时的执行情况 function test(a){ console.log(a); }; var a = 1 ; test(a++); //打印的结果是1;说明a++作为一个实参是先传递,再进行自身加1; function test(a){ console.log(a); }; var a = 1 ; test(++a); //打印的结果是2;说明++a作为一个实参是先进行自身加1,再传递;雷同test(a+1); function test(a){ console.log(++a); }; var a = 1 ; test(++a); //打印的结果是3;说明++a作为一个实参是先进行自身加1,再传递;再函数执行时也是先继续进行自身加1,再打印出来; function test(a){ console.log(a++); }; var a = 1 ; test(++a); //打印的结果是3;说明++a作为一个实参是先进行自身加1,再传递;再函数执行时先打印出结果,再进行自身加1; //最后总结一波运算符和传参的糅合情况,让我们更加了解js的执行逻辑 function test(a){ console.log(a++ + ++a - a-- / a++ % a++ + ++a); } var a = 1; test(a++); //打印结果是7.5,简单分析,传入的参数是1;然后进行最后的计算即可; </script>