Mar*_*wal 4 javascript functional-programming
给出定义:
纯函数是给定相同输入的函数,将始终返回相同的输出并且不产生副作用。
我们可以将函数视为AmIPure纯函数吗?根据定义没有,但我想确定一下。
function Amount(value, currency) {
this.value = value;
this.currency = currency;
}
function AmIPure(value, currency) {
return new Amount(value, currency);
}
var foo = AmIPure(5, "SEK");
var baz = AmIPure(5, "SEK");
console.log(foo === baz); //false
Run Code Online (Sandbox Code Playgroud)
这取决于“相同”的定义。
如果您期望严格的对象相等,那么只有返回标量(例如数字、布尔值...)的函数才可以被视为“纯”。
不过,一般来说,这并不是您真正的意思:您通常不关心是否获得了完全相同的对象实例,仅当它根据某些定义等于另一个对象实例时,例如:
"HELLO"和"HELLO"){x:0,y:1}并且{y:1,x:0})[1,2,3]并且[1,2,3])