我刚才一直在看Underscore.js的_.isEqual
功能和代码的部分是这样的:Underscore.js这行是否需要进行相等性检查?
if (a === b) return true;
if (typeof a !== typeof b) return false;
if (a == b) return true;
我只是想知道,如果有其中第三条语句可以达成任何情况下,并评估为true
?
编辑:只是要清楚,这不是我自己的代码,我说的是,我读下划线的来源,特别是this line和我很好奇他们为什么这样做。
有一些奇怪的边缘情况下,这是可能的... –
@nickf:考虑到当类型相同时'=='和'==='是相同的,我看不出第一次和第三次测试会提供不同的结果。即使在'null'的情况下,'typeof'与内部的'Type'不同,它不强制为除'undefined'之外的任何值,它具有不同的'typeof'值。如果那里有*边缘案例,你怎么知道你会希望它强制?对相同的值进行'=='和'==='测试似乎很奇怪。要么你想要类型强制,要么你不需要。 – user113716
......我应该在上面的评论中通过*“you”*来阐明,我并不是想暗示* nickf *,而是*一个人*。 – user113716