你知道以下两个函数是否相同吗?
function validate(str)
{
return ( ['null','','undefined'].indexOf(str) < 0 );
}
和
function validate(str)
{
return (str !== null || str !== '' || str !== undefined);
}
这个问题主要是因为indexOf数组中的null和undefined的撇号。
答案 0 :(得分:3)
如您所见,他们没有返回相同的结果。
主要问题是,您将值转换为字符串,以便在validate1
中进行比较。如果您有一个包含此值的字符串,则会得到错误的结果。
function validate1(str) {
return ['null', '', 'undefined'].indexOf(str) < 0;
}
function validate2(str) {
return str !== null || str !== '' || str !== undefined;
}
console.log([null, undefined, 0, '', false, 'null', 'undefined'].map(v => [v, validate1(v), validate2(v)]));
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 1 :(得分:0)
当然不是。例如,要将值检查为未定义的&#39;您需要检查数据类型(!)a与未定义的值进行比较。使用typeof运算符来获取类型。