欢迎光临散文网 会员登陆 & 注册

关于 i=i++; 出乎意外的结果

2022-02-17 23:28 作者:doubleyong  | 我要投稿

今天和大家分享一道题

答案,相信大家一眼就能看出,  结果为 0 


下面变化一下,代码如下


结果多少呢?  0  or   1



先思考下!


先思考下!


先思考下!


揭晓答案,结果还是 0 ; Why ?  Why ?  Why ? 

( 你做对了嘛^_^ )




解析:

运算符优先级

++作为后置递增时,优先级为16,而作为前置递增时,优先级为15

=作为赋值运算符时,优先级为3

所以,++会优先于=而执行



++运算符前置与后置的区别

我们看看MDN上对该运算符的说明:

If used postfix, with operator after operand (for example, x++), then it returns the value before incrementing.

If used prefix with operator before operand (for example, ++x), then it returns the value after incrementing.


简单翻译:

如果该运算符作为后置操作符,则返回它递增之前的值;

如果该运算符作为前置操作符,则返回它递增之后的值


所以,我们就知道, ++运算符会返回一个值,如果前置,则返回操作对象递增之后的值,如果后置,则返回操作对象递增之前的值。


var i=0 ; var i = i++; 时,实际上做了如下操作

 

var i=0 ; var i =++i; 时,实际上做了如下操作


总结:

不管++在前,还是在后;++运算符的优先级都高于=号;

区别在于,++返回的是递增之前的值,还是递增之后的值


关于 i=i++; 出乎意外的结果的评论 (共 条)

分享到微博请遵守国家法律