關于 i=i++; 出乎意外的結果
2022-02-17 23:28 作者:doubleyong | 我要投稿
今天和大家分享一道題
答案,相信大家一眼就能看出,? 結果為 0?
下面變化一下,代碼如下
結果多少呢?? 0? or? ?1
先思考下!
先思考下!
先思考下!
揭曉答案,結果還是 0 ; Why ?? Why ?? Why ??
( 你做對了嘛^_^ )
解析:
運算符優(yōu)先級
++作為后置遞增時,優(yōu)先級為16,而作為前置遞增時,優(yōu)先級為15
=作為賦值運算符時,優(yōu)先級為3
所以,++會優(yōu)先于=而執(zhí)行
++運算符前置與后置的區(qū)別
我們看看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; 時,實際上做了如下操作
總結:
不管++在前,還是在后;++運算符的優(yōu)先級都高于=號;
區(qū)別在于,++返回的是遞增之前的值,還是遞增之后的值
標簽: