鉴于定义:
纯函数是一个给出相同输入的函数,总是会返回相同的输出并且不会产生副作用。
我们可以将函数AmIPure
视为纯函数吗?根据定义no,但我想确定。
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
答案 0 :(得分:4)
这取决于“相同”的定义。
如果你期望严格的对象相等,那么只有返回标量的函数(例如数字,布尔值......)才能被认为是“纯粹的”。
一般情况下,这不是你真正的意思:你通常不关心你是否得到一个对象的完全相同的实例,只有当它相等根据某些定义,另一个定义,例如:
await Task.Factory.StartNew(
() =>
{
cr.Create(current_file_name, output);
File.Copy(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\HTMLViewer.html", outputPath + "\\HTMLViewer.html", true);
ZipFile.CreateFromDirectory(outputPath, Directory.GetParent(outputPath) + "\\" + Path.GetFileNameWithoutExtension(current_file_name) + ".zip");
});
_window.MainDispatcher.BeginInvoke(() =>
{
_popUp.PopUpText = "DeepZoom completed";
_popUp.BeginPopUpTimer();
});
和"HELLO"
)"HELLO"
和{x:0,y:1}
){y:1,x:0}
和[1,2,3]
)答案 1 :(得分:-1)
此处您从函数返回的结果是object
。如果你比较它不会给出的对象。相反,您可以比较值
var foo = AmIPure(5, "SEK");
var baz = AmIPure(5, "SEK");
console.log(foo.value === baz.value && foo.currency === baz.currency );
这应该是真的。