JavaScript高级程序设计4.1.3(170页)中有这么一句话:访问变量有按值和按引用两种方式。
这句话怎么理解?什么是按值?什么是按引用?
JavaScript高级程序设计4.1.3(170页)中有这么一句话:访问变量有按值和按引用两种方式。
这句话怎么理解?什么是按值?什么是按引用?
原始(基本)类型:number, string, boolean, null, undefined, NaN 存放在栈中(空间小但是效率高)
引用(对象)类型:object, function 存放在堆中(空间大但是效率低)
原始类型简单所以按值传递
引用类型比较复杂一般传递的是堆地址
按值访问对于基本类型而言,不同变量指向的地址空间都是不同的,即使把一个变量赋值给另一个变量,接收到时变量指向的内容而不是内存地址;
按引用访问对于对象类型而言,不同的变量指向的地址空间可能是相同的,当一个变量赋值给另一个变量时,接收到的变量的地址,而不是内容;
实际上处理的都是"值",只是这个"值"对于不同的变量类型有不同的含义
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
JavaScript和Java的内存管理类似,存放数据的地方都是栈(数值)和堆(引用);
基本类型和引用类型的主要区别是基本类型在内存中的大小固定、生存期确定,引用类型则是动态分配的、生存期不确定;
基本类型在作用域执行完后立即释放,引用类型则再没有变量引用时,系统的垃圾回收机制才会在合适的时候(回收算法)回收它;
JavaScript基本数据类型Undefined、Null、Boolean、Number 和String