<script> function out(x){ var temp = 2; function inside(y){ document.write( x + y + (temp--)); } inside(5); } out(3); </script>输出结果为:
* {//前置++ T& operator++() { this = this + 1; //执行递增 return *this; } //后置++ T operator++(int) //占位符,表示后置++ { T tmp = this; this = this + 1; //执行递增 return tmp; //返回临时值 }
var i=1 var j=i++ //相当于先j=i 然后 i++ 就是让i自己+1 相当于i=i+1。i靠近 =,好,先赋值,再运算自身, //这时候j的值还是1但是i由于自己+1了,这时候i的值就是2了 var i=1 var j=++i //相当于先让i自己加1,加1后再赋值给j,运算符在前,那就先运算了++i=>i=i+1 => i=2 //i运算后变成2,这时候再赋值给j,j=i就变成了j=2 //(i++)也是一样 相当于(j=i++)加个括号提升优先权,可以,但是你里面还是没变啊,i++不就相当于 //(j=i++) 先赋值,再运算,我不管你i了 我要是赋值的值,那就是j=i,你后面运算的也是运算i,i的值变了而已
--运算符前置和后置的区别
如果该运算符作为后置操作符,则返回它递减之前的值。
如果该运算符作为前置操作符,则返回它递减之后的值。
后置:
var i = 5;
var a = i--;
console.log(i);//输出4
console.log(a);//输出5
前置:
var j = 5;
var b = --j;
console.log(j);//输出4
console.log(b);//输出4
function out(x){ var temp = 2; function inside(y){ document.write( x + y + (temp--)); } inside(5); } out(3); //以上函数执行过程如下: function out(x){ function inside(y){ //函数提升 document.write( x + y + (temp--)); } var temp ; temp =2; inside(5); //此时调用inside(5),x=2,y=5,temp=2 } out(3);