您现在的位置是:首页 > Javascript
当前栏目
前端面试 【JavaScript】— 说出下面代码运行的结果,解释其原因
2023-03-14 22:52:48 时间
function test(person) {
person.age = 26 ;
person = { name: 'abc', age: 18 }
return person
} ;
const p1 = { name: 'xyz', age: 19 };
const p2 = test(p1) ;
console.log(p1);
console.log(p2);
执行结果如下:
console.log(p1);
// {"name": "xyz","age": 26}
console.log(p2);
// {"name": "abc","age": 18}
原因:在函数传参的时候传递的是对象在堆中的内存地址值。test函数中的实参person是p1对象的 内存地址,通过调用person.age = 26确实改变了p1的值,但随后person变成了另一块内存空间的地址,并且在最后将这另外一份内存空间的地址返回,赋给了p2。
相关文章
- Vue 指令之插值 v-text、v-html、v-once
- Vue 实例、el、data
- 前端老司机 70+ 实用工具网站分享(建议收藏!)
- JavaScript专项算法题(6):Promises
- JavaScript专项算法题(7):Iterators迭代器
- JavaScript数组方法中 push() 和 unshift() 的区别
- 一些关于网站推广问题合集。
- JavaScript——正则表达式
- HTML highlight 代码前端高亮、代码美化
- SpringBoot发送邮件
- SpringCloud 和 SpringBoot 版本选型
- SprongCloud组件
- 微搭低代码从入门到精通10-tab栏组件
- 微搭低代码从入门到精通12-网格布局
- Layui 组件化
- JavaScript 回调函数
- JavaScript 连接消息(RabbitMQ)
- Springboot整合log4j2(按级别拆分)
- jQuery选择器(满足你的所有业务)
- ElasticSearch全文搜索引擎 -Spring Boot操作ES(SpringData概述、Spring Data Elasticsearch、基本操作、ElasticSearch操作文档)