javascript对象 - 如何理解JavaScript访问变量有按值和按引用两种方式 这句话
PHP中文网
PHP中文网 2017-04-11 09:42:56
[JavaScript讨论组]

JavaScript高级程序设计4.1.3(170页)中有这么一句话:访问变量有按值和按引用两种方式。
这句话怎么理解?什么是按值?什么是按引用?

PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
黄舟

JavaScript和Java的内存管理类似,存放数据的地方都是栈(数值)和堆(引用);
基本类型和引用类型的主要区别是基本类型在内存中的大小固定、生存期确定,引用类型则是动态分配的、生存期不确定;
基本类型在作用域执行完后立即释放,引用类型则再没有变量引用时,系统的垃圾回收机制才会在合适的时候(回收算法)回收它;
JavaScript基本数据类型Undefined、Null、Boolean、Number 和String

阿神

首先你得知道什么是原始类型,什么是引用类型

  • 原始(基本)类型:number, string, boolean, null, undefined, NaN 存放在栈中(空间小但是效率高)

  • 引用(对象)类型:object, function 存放在堆中(空间大但是效率低)

传值

  • 原始类型简单所以按值传递

  • 引用类型比较复杂一般传递的是堆地址

ringa_lee

按值访问对于基本类型而言,不同变量指向的地址空间都是不同的,即使把一个变量赋值给另一个变量,接收到时变量指向的内容而不是内存地址;
按引用访问对于对象类型而言,不同的变量指向的地址空间可能是相同的,当一个变量赋值给另一个变量时,接收到的变量的地址,而不是内容;

实际上处理的都是"值",只是这个"值"对于不同的变量类型有不同的含义

PHP中文网


按引用的例子

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号