JS的运算符和对传参的影响

<!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>
原文地址:https://www.cnblogs.com/XieYFwin/p/10852696.html