Javascript最佳实践使用undefined作为布尔值评估?

时间:2015-02-02 22:39:20

标签: javascript

在这个简单的javascript代码中,方法验证如果条件不匹配则返回一个字符串,否则为undefined。我正在使用未定义的值,如果'条款。这是常见/可接受的JavaScript编程实践吗?

if (verify(text)) {
   alert(text + " is not bar");
}

function verify(foo) {
  if (foo + "" != "bar") return "foo is not same as bar";
}

3 个答案:

答案 0 :(得分:1)

是的,既然您知道验证结果将是真实的(非空字符串)或虚假的(未定义的),那么使用它就完全没问题。

这里列出了JS中的真实和虚假值,您可能会发现它们很方便:http://www.sitepoint.com/javascript-truthy-falsy/

答案 1 :(得分:0)

这是一种常见的做法,但根据我的经验,最好是明确的。例如,我更喜欢:

verify(text) === undefined

我建议的方法是进行“验证”。返回一个布尔值。原因是,无论出于何种原因,如果验证方法返回0(零)并执行if (verify),则条件将为false,但0实际上是验证值。

我希望有所帮助。

答案 2 :(得分:0)

虽然这在技术上是可行的并且在大多数情况下都能正常工作,但我个人觉得设计函数的风格更好,所以它们总是返回相同的类型。我的IDE警告我不一致的功能:

enter image description here

应该认真对待这个警告。特别是,当您测试应用时,它可以帮助您避免令人不快的意外:

// hmm...
function isZero(n) {
    if(n == 0)
        return true;
}

// let's test it
describe("test", function() {
    it("isZero", function() {
        expect(isZero(0)).toBe(true);
        expect(isZero(1)).toBe(false); // FAILURE!
    });
});