-
Couldn't load subscription status.
- Fork 2
Open
Labels
Description
参数传递策略是求值策略的特殊情况。
ECMAScript 中所有的参数都是按值传递的。 -- 《JavaScript 高级程序设计》 4.1.3
基本类型值的传递如同基本类型变量的复制一样,而引用类型值的传递,则如同引用类型变量的复制一样(复制指针)。
传值调用(Call By Value)
对于 基本类型值 的传递是传值调用
特征: 对于传递过来的变量进行修改,不会影响到原变量。
传引用调用(Call By Reference)
对于 引用类型值 的传递是传引用调用
特征: 对于变量的成员进行修改时,会直接影响原变量;而如果对传递过来的变量进行重新赋值,则不会影响原变量,并且此后再修改变量的成员,也不会影响原变量。
其它的求值策略
传共享对象调用(Call By Sharing)
特征: 无论是对于变量成员的修改,还是对变量重新赋值,都会影响到原对象。
传名调用(Call By Name)
特征: 如果实际参数在函数的求值中未被用到,则它永不被求值;如果这个实际参数使用多次,则它每次都被重新求值。
传需求调用(Call By Need)
特征: “传需求调用”是传名调用的记忆化版本,如果“函数的实际参数被求值了”,这个值被存储起来已备后续使用。当函数实际参数被使用两次或更多次的时候,传需求调用总是更快。
传需求调用的条件:纯函数。