1
我注意到其中一个Node API的实现中的snippet_1。 Snippet_2已由我撰写。我觉得他们之间没有太大的区别。使用valueOf()
函数真的有什么意义吗? 而且,我们可以看到一个称为valueOf
属性,它会返回[Function: valueOf]
valueOf()在javascript中的意义
Snippet_1
Buffer.from = function from(value, encodingOrOffset, length) {
const valueOf = value.valueOf && value.valueOf();
if (valueOf !== null && valueOf !== undefined && valueOf !== value)
return Buffer.from(valueOf, encodingOrOffset, length);
}
Snippet_2
Buffer.from = function from(value, encodingOrOffset, length) {
if (value !== null && value !== undefined)
return Buffer.from(value, encodingOrOffset, length);
}
在其他情况下会发生什么?您能否将您在某些情况下找到的实现链接起来? – Bergi
它真的应该是'const valueOf = typeof value.valueOf ==“function”? value.valueOf():null',否则失败于具有自定义'valueOf'数据属性的对象。 – Bergi
“*我觉得他们之间没有太大的区别。”“ - 差别不明显吗?这两个片段做了非常不同的事情。你真的认为他们对所有可能的价值有相同的结果吗? – Bergi