【发布时间】:2018-04-17 10:11:33
【问题描述】:
我想验证一个日期(在 arg 中作为格式为 99/99/9999 的字符串传递)。根据我的需要,空/null/未定义的字符串应该被认为是好的。
这是我的验证函数:
function isDateValid(date) {
if(date && date.length == 0){
return true;
}
//more checks
}
我得到了奇怪的结果,我无法解释:
对于空字符串(字符长度为 0 的字符串),条件被评估为空字符串,因此不会达到
return true使用填充字符串(例如:“01/01/2018”),条件被评估为
false布尔值。
我知道如何更改以使代码按我的需要运行....但这让我很难理解为什么它有 2 个不同的组件(一次是字符串,一次是布尔值)。
我需要一个队长!
添加一些console.log为
function isDateValid(date) {
console.log(date);
console.log(date.length);
console.log(date && date.length == 0);
console.log(typeof (date && (date.length == 0)));
if(date && date.length == 0){
return true;
}
//more...
}
将产生以下输出:
【问题讨论】:
-
你能在小提琴中创建一个最小的复制吗?输入和预期输出是什么...
-
@phuzi 刚刚发布了一个答案,向您解释了什么是“虚假”。例如,一个空字符串是虚假的。我更新了你的 jsfiddle:jsfiddle.net/v8easudj/7
标签: javascript validation date conditional-statements