|
今天和大家分享一道题
var i = 0; var a = i++; console.log(a); 答案,相信大家一眼就能看出, 结果为 0 下面变化一下,代码如下 var i = 0; i = i++; console.log(i);结果多少呢? 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++; 时,实际上做了如下操作 i = 0 j = i; // j 操作运算时系统生成的 i = i+1; i = j; // 故i=0 当 var i=0 ; var i =++i; 时,实际上做了如下操作 i = 0 i = i+1; j = i; //注意和上面代码的位置 i = j; // 故i=1 总结: 不管++在前,还是在后;++运算符的优先级都高于=号; 区别在于,++返回的是递增之前的值,还是递增之后的值 |
|
|