JS基础易错点 (1)自增和自减问题

自增与自减

(1)自增的含义

自增和自减性质相同,这里拿自增来具体说明这两者的性质。

  1. 自增指的是对于一个变量自增后,原变量的值会在基础上增加1,自增符号为(++)。

  2. 自增分成两种:后++(a++)和前++(++a)。无论是a++、还是++a,都会使原变量的值自增1,但不同的是a++和++a的值不同

这里就出现疑问了,怎么a++和++a的都会使原变量的值自增1,怎么还说a++和++a的值不同呢!

(2)问题所在

  • 要想理解这个问题,首先要明确一个概念:a++和++a不是变量!
  • a++和++a是一个表达式,而不是变量,表达式有表达式的值,变量有变量的值。
  • a++和++a的值不同说的是这两个表达式的值不同,而不是a这个变量值不同,他们所得结果a这个变量的值是相同的

(3)a++和++a的区别

这里举个例子详细说明下a++和++a的区别。

  1. 这里我设了a、b两个值,都为1,a进行前++、b进行后++。然后输出控制台,其结果都为2
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>自增自减问题</title>
	<script type="text/javascript">
	var a = 1;
		a++;
		console.log("a="+a);
	var b = 1;
		++b;
		console.log("b="+b);
	</script>
</head>

<body>
</body>
</html>

在这里插入图片描述
请忽略语法不正确问题,我也不知道怎么回事
通过输出结果可以看出两种自增方式最后输出的值是一样的,也就是一个变量通过两种自增方式所得的最终值都是原变量+1

  1. 最终输出变量的相同了,那我们来验证他们本身值是否也相同。
    让控制台直接输出a++和++b这两个表达式的值。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>自增自减问题</title>
	<script type="text/javascript">
	var a = 1;
		console.log("a++="+ a++);
	var b = 1;
		console.log("++b="+ ++b);
	</script>
</head>

<body>
</body>
</html>

在这里插入图片描述
由此可以看出虽然a和b的值都为1,但a++和++b的值并不同,原因如下:

  • a++的值等于原变量的值(也就是变量自增前的值)
  • ++b的值等于原变量的新值(也就是变量自增后的值)

简单来说a++和++b在js中的最终变量的运算结果相同,但运算的流程不同,所以导致这两个表达式的结果不同(这里是表达式的结果而不是最终变量,要分清)。

(4)练习例子

1.给a一个设置一个20的常量,让其进行如下运算并输出。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>自增自减问题</title>
	<script type="text/javascript">
	var a = 20;
		var a = a++ + ++a + a;
		console.log("a="+a);
	</script>
</head>

<body>
</body>
</html>

在这里插入图片描述

其实这个运算可以分解为以下几个步骤

  • 首先看式子的第一部分“a++”;a=20,那么a++=20(自增前的值)
  • 经过第一部分a++表达式运算之后,a=21(a自增1)
  • 然后看第二部分“++a”,这时a=21,那么++a=22(自增后的新值);
  • 最后看第三部分“a”,经过第二部分的++a表达式运算之后,a=22;
  • 所以上面那个式子最终可以看做a=a++(20)+ ++a(22)+a(22)=64
    所以,要想理解自增的含义,必须要分清a变量和++a或a++表达式的区别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值