Skip to content

【JS】参数传递策略 #3

@zh-rocco

Description

@zh-rocco

参数传递策略是求值策略的特殊情况。

ECMAScript 中所有的参数都是按值传递的。 -- 《JavaScript 高级程序设计》 4.1.3

基本类型值的传递如同基本类型变量的复制一样,而引用类型值的传递,则如同引用类型变量的复制一样(复制指针)。

传值调用(Call By Value)

对于 基本类型值 的传递是传值调用

特征: 对于传递过来的变量进行修改,不会影响到原变量。

传引用调用(Call By Reference)

对于 引用类型值 的传递是传引用调用

特征: 对于变量的成员进行修改时,会直接影响原变量;而如果对传递过来的变量进行重新赋值,则不会影响原变量,并且此后再修改变量的成员,也不会影响原变量。

其它的求值策略

传共享对象调用(Call By Sharing)

特征: 无论是对于变量成员的修改,还是对变量重新赋值,都会影响到原对象。

传名调用(Call By Name)

特征: 如果实际参数在函数的求值中未被用到,则它永不被求值;如果这个实际参数使用多次,则它每次都被重新求值。

传需求调用(Call By Need)

特征: “传需求调用”是传名调用的记忆化版本,如果“函数的实际参数被求值了”,这个值被存储起来已备后续使用。当函数实际参数被使用两次或更多次的时候,传需求调用总是更快。

传需求调用的条件:纯函数。

More ...

参考

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions