在这个简单的javascript代码中,方法验证如果条件不匹配则返回一个字符串,否则为undefined。我正在使用未定义的值,如果'条款。这是常见/可接受的JavaScript编程实践吗?
if (verify(text)) {
alert(text + " is not bar");
}
function verify(foo) {
if (foo + "" != "bar") return "foo is not same as bar";
}
答案 0 :(得分:1)
是的,既然您知道验证结果将是真实的(非空字符串)或虚假的(未定义的),那么使用它就完全没问题。
这里列出了JS中的真实和虚假值,您可能会发现它们很方便:http://www.sitepoint.com/javascript-truthy-falsy/
答案 1 :(得分:0)
这是一种常见的做法,但根据我的经验,最好是明确的。例如,我更喜欢:
verify(text) === undefined
我建议的方法是进行“验证”。返回一个布尔值。原因是,无论出于何种原因,如果验证方法返回0(零)并执行if (verify)
,则条件将为false,但0实际上是验证值。
我希望有所帮助。
答案 2 :(得分:0)
虽然这在技术上是可行的并且在大多数情况下都能正常工作,但我个人觉得设计函数的风格更好,所以它们总是返回相同的类型。我的IDE警告我不一致的功能:
应该认真对待这个警告。特别是,当您测试应用时,它可以帮助您避免令人不快的意外:
// 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!
});
});