这里的问题是,逻辑表达式的一部分被评估然后比较,因此 data.ArchiveSnapshotID === data.CurrentSnapshotID
评估为“true”并data.LiveSnapshotID
检查是否为 true,您可以在此处看到(LiveSnapshotID
已更改为 boolean true
):
function projectIsLocked (data) {
if (data.ArchiveSnapshotID === data.CurrentSnapshotID === data.LiveSnapshotID) {
return true;
}
return false;
}
var data = { ArchiveSnapshotID: "foo", CurrentSnapshotID: "foo", LiveSnapshotID: true };
alert(projectIsLocked (data));
您可能想要使用类似这样的东西,它对于更多的属性是相当可扩展的。
function projectIsLocked (data) {
var props = ["ArchiveSnapshotID", "CurrentSnapshotID", "LiveSnapshotID"];
for (var i = 1; i < props.length; i++)
{
if (data[props[i]] !== data[props[i - 1]])
return false;
}
return true;
}