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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于扩展运算符中i++和++i,以及基本类型和引用类型的综合应用相关的知识,希望对你有一定的参考价值。

首先说一下扩展运算符中的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,以及基本类型和引用类型的综合应用的主要内容,如果未能解决你的问题,请参考以下文章

基本数据类型和引用数据类型作为参数传递的区别

关于es6中对象的扩展

指针和引用

go语言学习笔记 — 基础 — 基本数据类型 — 类型类别:值类型和引用类型

在编程语言中扩展预增量运算符[重复]

原生---回忆---思维***链接---知识点回顾及思考