懂做网站的人就是好,网站建设合同服务事项,阿里云网站建设服务费会计科目,怎么样备份网站数据库最近差不多一个月没写博客了#xff0c;主要的原因是目前在使用 Markdown 写学到的一些心得#xff0c;一方面方便记笔记#xff0c;另一方面页面排版更加的美观。 个人笔记站点 : https://yewenxiang23.github.io 碰到的问题#xff1a; 今天碰到一个关于传递参数的问题主要的原因是目前在使用 Markdown 写学到的一些心得一方面方便记笔记另一方面页面排版更加的美观。 个人笔记站点 : https://yewenxiang23.github.io 碰到的问题 今天碰到一个关于传递参数的问题想了一下午终于想通了打算总结记录一下 解决的思路传参是值复制的一个过程传递的是值 1 function setName(obj){
2 obj.name yewenxiang;
3 obj new Object();
4 obj.name ye;
5 }
6 var person new Object();
7 setName(person);
8 console.log(person.name); //yewenxiang 上面的代码输出了 yewenxiang而不是ye。感觉非常的怪异下面来对于传递参数做一个总结。 传递参数 所有的函数参数都是按值传递的 也就是说把函数的值复制给函数内部的参数就和把值从一个变量复制到另一个变量一样。 值有两种类型: 基本类型:值保存在栈内存中复制的时候也是把值同时也复制了一份。引用类型:值保存在堆内存中栈内存中保存的只是指向堆内存中值的一个指针复制的时候纸箱基本类型传参例子就拿 《javascript高级程序设计》上的例子来说 基本类型的值传参: 1 function addTen(num){
2 num 10;
3 return num;
4 }
5 var count 20;
6 var result addTen(count);
7 console.log(count); //20
8 console.log(result); //30 函数 addTen() 有一个num 参数而参数实际上是函数的局部变量。在调用这个函数并传入参数 count时。由于 count的值为20,传递参数的过程是一个值得复制过程也就是把 count 的值20,复制给了参数(函数的局部变量) num 20。在堆内存中存在了 count20 和num20两个变量是互相不干扰的。 引用类型的值传参 1 function setName(obj){
2 obj.name yewenxiang;
3 }
4 var person new Object();
5 setName(person);
6 console.log(person.name); //yewenxiang 这个例子中传入了一个 person 对象也就是引用类型引用类型的复制和基本类型的复制不同复制的是栈内存 变量person 中保存的地址这个地址也指向堆内存中同一个对象。所以修改了函数局部变量 obj的name属性为yewenxiang person.name也变为了yewenxiang。 证明参数是按值传递的一个例子 1 function setName(obj){
2 obj.name yewenxiang;
3 obj new Object();
4 obj.name ye;
5 }
6 var person new Object();
7 setName(person);
8 console.log(person.name); 这是我碰到的问题开始我想的是输出 ye 为什么会输出 yewenxiang呢。明明obj代表的是person这个对象,而函数内部赋值之后又重新构造了一个新对象并赋值为 ye,所以应该输出 ye啊为什么不是呢那肯定是想错了嘛。废话少说 直接上图: 上面3.4行代码执行之前: 3.4行代码执行之后 由于obj为函数的局部变量那么我们如何证明呢 1 function setName(obj){2 obj.name yewenxiang;3 console.log(obj.name); //yewenxiang4 obj new Object();5 obj.name ye;6 console.log(obj.name); //ye7 }8 var person new Object();9 setName(person);
10 console.log(person.name); //yewenxiang
11 console.log(obj.name); //报错 这样就证明了我的想法是正确的。 转载于:https://www.cnblogs.com/yewenxiang/p/6337961.html