您的位置:首页 > 其它

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

2016-03-06 17:20 323 查看
首先说一下扩展运算符中的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]

本人可能能力有限,若是有什么不对之处,欢迎指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: