(1)基本数据类型按值传递
基本类型的变量是存放在栈区的(栈区指内存里的栈内存),不共享内存空间
var a=1
var b=a
var a=2
console.log(a)//2
console.log(b)//1
(2)引用类型值按引用传递
引用类型值,引用类型的值是同时保存在栈内存和堆内存中的对象。JavaScript和其他语言不同,其不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间,那我们操作啥呢? 实际上,是操作对象的引用,所以引用类型的值是按引用访问的。
数组:
事例1
var a=[1,2,3]
var b=a
a.push(4)
console.log(a) //1,2,3,4
console.log(b)//1,2,3,4
事例2
var a=[1,2,3]
var b=a
a=33 //注改变了指向
console.log(a) //33
console.log(b) //123
对象:
事例1
var obj={a:1,b:2}
var obj1=obj
obj.a=2
console.log(obj) // {a:2,b:2}
console.log(obj1) // {a:2,b:2}
事例2
var obj={a:1,b:2}
var obj1=obj
obj=22
console.log(obj) //22
console.log(obj1) //{a:1,b:2}