AngularJS - Javascript:我有什么办法可以改进这个有效状态函数吗?

时间:2015-11-19 08:54:50

标签: javascript jquery angularjs

我在AngularJS服务中有这个功能:

self.IsValid = function (entity) {
    if (entity == undefined || entity == "undefined")
        return false;

    if (entity == null)
        return false;

    if (entity == "00000000-0000-0000-0000-000000000000")
        return false;

    return true;
}

工作样本here

我能做些什么来改善这个?或者可能有一个更好的方式?

PS:Resharper说entity == null检查总是错误的,但感觉不对,我本可以通过null

2 个答案:

答案 0 :(得分:2)

您可以使用

self.IsValid = function(entity) {
    return (entity !== "undefined" && entity !== "00000000-0000-0000-0000-000000000000") && !!entity;
};
  1. entity !== "undefined" && entity !== "00000000-0000-0000-0000-000000000000":检查entity变量的值是否不是'undefined''00000000-0000-0000-0000-000000000000'。如果表达式求值为false,则返回结果。
  2. !!会将值转换为Boolean。请参阅What is the !! (not not) operator in JavaScript?
  3. Updated Plunker

答案 1 :(得分:1)

如果您可以识别所有无效案例,那么您只需将它们列在一个数组中,然后检查它们的权利

var invalid = [undefined, "undefined", null, "0000-..."];
var isInArray = invalid.indexOf(entity) >= 0;
return isInArray;

这比大型复合布尔表达式更容易维护。您甚至可以将此列表移到单独的配置文件中,以便共享并注入到单独的服务中。