文章目录
  1. 1. 实例(听说这是一道简化的JS面试题?)
  2. 2. 分析
    1. 2.1. 引用图
  3. 3. 还有个现成的问题推荐看看
  4. 4. Refernce

实例(听说这是一道简化的JS面试题?)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function testFtn(sNm,pObj){

console.log(sNm);// 运行结果:new Name

console.log(pObj.oName);// 运行结果:new obj

sNm = "change name";

pObj.oName = "change obj";
}
var sNm = "new Name";

var pObj = {oName:"new obj"};

testFtn(sNm,pObj);

console.log(sNm);// 运行结果:new Name

console.log(pObj.oName);// 运行结果:change obj

分析

看着看着,再结合js的堆栈引用图,然后恍然大悟:这特么不就是C中的传值和传址调用嘛!

函数内基本类型传入的是值,引用类型传入的是地址,所以函数内改变基本类型的形参并没有什么卵用(因为这个形参的作用域只在函数里面,而且用完销毁).引用类型的话传入了地址,所以很正常的可以改变自己的内容

引用图

1

还有个现成的问题推荐看看

关于javascript的引用类型

Refernce

SegmentFault

文章目录
  1. 1. 实例(听说这是一道简化的JS面试题?)
  2. 2. 分析
    1. 2.1. 引用图
  3. 3. 还有个现成的问题推荐看看
  4. 4. Refernce