js运算符

qq_42543358 2018-06-25 05:52:56
var j=1; j=(j++)+j+(j++)+(++j)+j; 答案等于13,就是不知道怎么算出来的,求告知
...全文
5425 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
j++ 和++j 都是自加
区别在于
J++是使用前自加 就是一段代码 你执行到了 先加再说
++j是使用后自加 一段代码 执行到了 相当于 ++j 看成J 然后这段代码块跑玩了 j再++
風灬雲 2020-09-14
  • 打赏
  • 举报
回复
var j=1; j =(j++) + j + (j++) + (++j) + j; 1 + 2 + 2 + 4 + 4 J++ 先 返回 j 的值 再对j做 +1 运算 ++j 先对j做 +1 运算 再返回运算后的结果
qq_50744167 2020-09-11
  • 打赏
  • 举报
回复
j++ =j自增前的值(原值) 记住此时J已自增
++j=j自增后的值(新值) 同样,j已自增
j=2+2+3+4+4
濮家大少 2020-09-11
  • 打赏
  • 举报
回复
首先你要知道,这个运算是从右往左执行的 1.先计算最右边的两个(++j)+j,此时j=2,等价于2+1 2.然后往左推,(j++)+2+1,此时j=3,等价于3+2+1 3.接着往左推,j+3+2+1,此时j=3,等价于3+3+2+1 4.接着往左推,(j++)+3+3+2+1,此时j=4,等价于4+3+3+2+1 5.得出结果为13
ambit_tsai-微信 2018-06-25
  • 打赏
  • 举报
回复
引用 5 楼 qq_42543358的回复:
[quote=引用 4 楼 ambit_tsai的回复:][quote=引用 3 楼 qq_42543358 的回复:]
[quote=引用 1 楼 天际的海浪的回复:](j++) //先返回1,再让j增加1,j为2
+
j //之前返回1 加 j 结果为3
+
(j++) //先计算之前的结果3 加 j 结果为5 ,再让j增加1,j为3
+
(++j) //先让j增加1,j为4 再计算之前的结果5 加 j 结果为9
+
j; //之前的结果9 加 j 结果为13

j++,直接就先运算出来吗[/quote]
若j为1,console.log(j++)输出的是1,因为j会先输出,然后再进行自增,
如果再console.log(j)一下,就会发现j是2。[/quote] 那这种一行之内的直接增量了?[/quote] 没错,从左至右计算。
天际的海浪 2018-06-25
  • 打赏
  • 举报
回复
引用 5 楼 qq_42543358 的回复:
[quote=引用 4 楼 ambit_tsai的回复:][quote=引用 3 楼 qq_42543358 的回复:]
[quote=引用 1 楼 天际的海浪的回复:](j++) //先返回1,再让j增加1,j为2
+
j //之前返回1 加 j 结果为3
+
(j++) //先计算之前的结果3 加 j 结果为5 ,再让j增加1,j为3
+
(++j) //先让j增加1,j为4 再计算之前的结果5 加 j 结果为9
+
j; //之前的结果9 加 j 结果为13

j++,直接就先运算出来吗[/quote]
若j为1,console.log(j++)输出的是1,因为j会先输出,然后再进行自增,
如果再console.log(j)一下,就会发现j是2。[/quote]
那这种一行之内的直接增量了?[/quote]
i++ 是先返回i原来的值,再对i增加1
++i 是先对i增加1,再返回i改变后的值
qq_42543358 2018-06-25
  • 打赏
  • 举报
回复
引用 4 楼 ambit_tsai的回复:
[quote=引用 3 楼 qq_42543358 的回复:]
[quote=引用 1 楼 天际的海浪的回复:](j++) //先返回1,再让j增加1,j为2
+
j //之前返回1 加 j 结果为3
+
(j++) //先计算之前的结果3 加 j 结果为5 ,再让j增加1,j为3
+
(++j) //先让j增加1,j为4 再计算之前的结果5 加 j 结果为9
+
j; //之前的结果9 加 j 结果为13

j++,直接就先运算出来吗[/quote]
若j为1,console.log(j++)输出的是1,因为j会先输出,然后再进行自增,
如果再console.log(j)一下,就会发现j是2。[/quote] 那这种一行之内的直接增量了?
ambit_tsai-微信 2018-06-25
  • 打赏
  • 举报
回复
引用 3 楼 qq_42543358 的回复:
[quote=引用 1 楼 天际的海浪的回复:](j++) //先返回1,再让j增加1,j为2
+
j //之前返回1 加 j 结果为3
+
(j++) //先计算之前的结果3 加 j 结果为5 ,再让j增加1,j为3
+
(++j) //先让j增加1,j为4 再计算之前的结果5 加 j 结果为9
+
j; //之前的结果9 加 j 结果为13

j++,直接就先运算出来吗[/quote]
若j为1,console.log(j++)输出的是1,因为j会先输出,然后再进行自增,
如果再console.log(j)一下,就会发现j是2。
qq_42543358 2018-06-25
  • 打赏
  • 举报
回复
引用 1 楼 天际的海浪的回复:
(j++) //先返回1,再让j增加1,j为2
+
j //之前返回1 加 j 结果为3
+
(j++) //先计算之前的结果3 加 j 结果为5 ,再让j增加1,j为3
+
(++j) //先让j增加1,j为4 再计算之前的结果5 加 j 结果为9
+
j; //之前的结果9 加 j 结果为13
j++,直接就先运算出来吗
ambit_tsai-微信 2018-06-25
  • 打赏
  • 举报
回复
考点: var a = i++;等价于var a = i; i = i + 1; i++是先输出i,再进行自增 var a = ++i;等价于i = i + 1; var a = i; ++i是先进行自增,再输出i
天际的海浪 2018-06-25
  • 打赏
  • 举报
回复
(j++) //先返回1,再让j增加1,j为2
+
j //之前返回1 加 j 结果为3
+
(j++) //先计算之前的结果3 加 j 结果为5 ,再让j增加1,j为3
+
(++j) //先让j增加1,j为4 再计算之前的结果5 加 j 结果为9
+
j; //之前的结果9 加 j 结果为13

87,838

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧