码迷,mamicode.com
首页 > 其他好文 > 详细

关于扩展运算符中i++和++i,以及基本类型和引用类型的综合应用

时间:2016-03-06 19:17:08      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

首先说一下扩展运算符中的i++和++i

i++和++i在单独使用的时候是一样的。

var i=1;
//i++;
//console.log(i);//2
++i
console.log(i);//2

但是当它参与其他运算是就会发生改变

var i=1;
var b=i++ + i++ + i++;//2+3+4
console.log(i);//4
console.log(b)//9

所以总结一下关于i++和++i,即i++是在加号前面,所以向赋值在加1,而++i是先运算再赋值

下面这个案例会涉及到提前声明hoist和原始类型和引用类型的的原理

在下面的原理中。参数a实际上是在getValue函数中的一个局部变量,所以才会有var a=a之说。根据按值传递的原理,原始变量访问的是一个实际值,即任何方式都没有办法改变一个基本类型的值。所以a并没有改变

var a=5
function getValue(a){
//var a=a;
return a++
}
var x=getValue(a);
console.log(x);//5
console.log(a);//5

在看看引用类型的案例

javascript和其他语言不同,其不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间,我们实际操作的就是对象的引用,所以在这个案例中arr是变化了的

var arr=[1,3,4]
function getValue(arr){
//var arr=arr;
for(var i=0;i<arr.length;i++){
++arr[i]
}
console.log(arr);//[2,4,5]
}
getValue(arr);
console.log(arr);//[2,4,5]

 

 

 

本人可能能力有限,若是有什么不对之处,欢迎指正。

关于扩展运算符中i++和++i,以及基本类型和引用类型的综合应用

标签:

原文地址:http://www.cnblogs.com/chen-q/p/5247969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!