我是 JS 新手,正在学习函数式编程,并遇到了“引用透明度”这个术语。另外,我发现了这样的说法“引用透明度表明用纯函数的值替换纯函数是安全的”。这是否意味着只要函数变热,使用 RT 就可以让 JIT 编译器轻松地用函数的返回值替换函数?真的吗?
这是一个例子:
这是一个纯函数:对于相同的输入,它将始终返回相同的输出
const even = x => x % 2 === 0;
让我们创建isTenEven()
这将检查是否10
是否为偶数:
const isTenEven = () => even(10);
既然我们保证even(10) === true
will always如果为真,那么我们确实可以用值替换函数调用:
const isTenEven = () => true;
还有你的程序仍然可以工作。™
但是,如果您无法这样做,even
不纯洁!
这是一个愚蠢的例子:每月一次10
将不再是偶数:
const even = x => (new Date()).getDate() === 15 ? false : x % 2 === 0;
也许你的程序是例外isTenEven()
返回任一true
or false
,所以强迫它总是假设它会返回true
could导致意想不到的后果。
当然,在这种特殊情况下,我不确定这些后果会是什么,但你永远不知道……这正是重点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)