var a={}
var b=a
a==b//true
值传递仅仅传递的是值引用传递,传递的是内存地址,修改后会改变内存地址对应储存的值。
用数组来举例就最清楚了,例如我们定义一个数组a[]={1,2}
那么a[0]=1,a[1]=2。
如果我们把数组a里的元素值作为参数传递,实际上只是进行了值传递,对数组本身没有影响
如果我们把 数组a的指针作为参数传递,那么假如处理的函数就可以直接修改数组a里的值。
代码实例:(只是写个大概的逻辑,语法可能有错误)
main()
{
int a[]={1,2}
test(a)
printf(a[0]) //此处打印的值是3, 这就是引用传递。
}
public void test(int b[])
{
b[0]=3
}
数组就是一组数据的集合其表现形式就是内存中的一段连续的内存地址
数组名称其实就是连续内存地址的首地址
2、关于js中的数组特点
数组定义时无需指定数据类型
数组定义时可以无需指定数组长度
数组可以存储任何数据类型的数据(比如说一个元素保存整型,一个元素保存字符串型,这个在JS中是可以的)
js中创建数组的语法:
var arr = [值1,值2,值3]//隐式创建
var arr = new Array(值1,值2,值3)//直接实例化
var array = new Array(size)//创建数组并指定长度
JS中符号含义:
() 表示函数执行
[] 表示语法模拟,表示模拟Array类的实例(=new Array())
{} 表示语法模拟,表示模拟Object类的实例(=new Object())
// 表示语法模拟(正则对象),表示模拟RegExp类的实例(=new RegExp())
3、关于数组长度
数组对象.length
在js中,每一个数组对象都可以调用length属性,它表示数组对象下共有几个数组元素
示例:
var row = ['zhangsan','lisi','wangwu']
console.log('共有'+row.length+'个人')//输出: 共有3个人
var length = row.length//对数组进行遍历
for (var i=0i<lengthi++){
console.log(row[i])//输出: zhangsan lisi wangwu
}
4、for...in语句
在js中,数组不是数据类型,数组的数据类型其实就是对象
Js中的For.....in语句可以实现对一个对象的所有属性的遍历
也可以使用for...in语句实现对一个数组的所有元素的遍历
语法:
for( var i in array ){
}
原理:数组中有几个元素,for..in语句就循环执行多少次
var row = ['zhangsan','lisi','wangwu','xiaoqiang']
for (var i in row){
console.log(i + ':' + row[i] + '<br>')
}
// 输出结果为: 0:zhangsan 1:lisi 2:wangwu 3:xiaoqiang
5、文本下标
格式:
arr['key'] = value
在js中,文本下标的数组元素,不计入数组长度
以文本下标形式添加到数组,实际是以属性形式添加到数组对象中的。