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>
更多精彩

