JavaScript中的自增自减
这几天在逆战班学习了自增自减,怕忘记就来写写博客加深印象。
自增和自减都是一元运算符,++ 为自增,- - 为自减,都是在原来的基础上加一或者减一;如:i++,++i 或者 i- -,- -i得到的结果就是在i原来的基础上加一或减一,就如当i=1时,执行i++或++i后i=2;执行i- -或- -i后i=0;
自增自减的运算规则:变量在前边,加号在后边,先取出变量的值,参与其他运算,再进行自加(自减),变量在后边,加号在前边,先进行自加(自减),在取出值参与其他运算。
自增自减的一些运算
<!Doctype html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<script>
var i = 1;//初始化 i
console.log(i++,i);//因为++在后边,所有先取出i的值,在i加一。所以打印出的结果为 1,2
</script>
</body>
</html>
<!Doctype html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<script>
var i = 1;
console.log((i++ + i-- - ++i + --i + i++),i);// 1 + 2 - 2 + 1 +1 = 3 , i 的值为 2
// 首先从左往右看 i++ 因为变量 i 在前面,++ 在后面;所以运算时先把 i 的值取出来,再执行 i + 1
// 所以这个式子等于 1 + i-- - ++i + --i + i++; 此时 i = 2
// 再继续运算 i-- 因为变量 i 在前面,-- 在后面;所以运算时先把 i 的值取出来,再执行 i - 1
// 所以这个式子等于 1 + 2 - ++i + --i + i++; 此时 i = 1
// 再继续运算 ++i 因为变量 i 在后面,++ 在前面;先执行 i + 1 ,再用 i 的值进行运算
// 所以这个式子等于 1 + 2 - 2 + --i + i++; 此时 i = 2
// 再继续运算 --i 因为变量 i 在后面,-- 在前面;先执行 i - 1 ,再用 i 的值进行运算
// 所以这个式子等于 1 + 2 - 2 + 1 + i++; 此时 i = 1
// 再继续运算 i++ 因为变量 i 在前面,++ 在后面;所以运算时先把 i 的值取出来,再执行 i + 1
// 所以这个式子等于 1 + 2 - 2 + 1 + 1; 此时 i = 2
// 最后式子等于 1 + 2 - 2 + 1 + 1 = 3; i 的值为 2
</script>
</body>
</html>
<!Doctype html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<script>
var i = 1;
console.log((i++ + i++ + ++i + i-- + --i),i);// 1 + 2 + 4 + 4 + 2 = 13,i 的值为 2
/*
i++ + i++ + ++i + i-- + --i 此时 i = 1;
= 1 + i++ + ++i + i-- + --i 此时 i = 2;
= 1 + 2 + ++i + i-- + --i 此时 i = 3;
= 1 + 2 + 4 + i-- + --i 此时 i = 4;
= 1 + 2 + 4 + 4 + --i 此时 i = 3;
= 1 + 2 + 4 + 4 + 2 此时 i = 2;
=13 此时 i = 2;
*/
</script>
</body>
</html>
<!Doctype html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<script>
var i = 1;
//console.log((i++ + i-- + i++),i); // 1 + 2 + 1 = 4,i 的值为 2
//console.log((i + i++ + i + i-- + i),i);// 1 + 1 + 2 + 2 + 1 = 7,i 的值为 1
//console.log((i++ + i++ + i + i--),i);// 1 + 2 + 3 + 3 = 9,i 的值为 2
console.log((i++ + i - --i + i++ - ++i + i),i);//1 + 2 - 1 + 1 - 3 + 3 = 3,i 的值为 3
</script>
</body>
</html>