你知道下面两个函数是否等价吗?
function validate(str)
{
return ( ['null','','undefined'].indexOf(str) < 0 );
}
和
function validate(str)
{
return (str !== null || str !== '' || str !== undefined);
}
问题的产生主要是因为 indexOf 数组中的 null 和 undefined 撇号。
最佳答案
如您所见,它们返回的结果不同。
主要问题是,您将值转换为字符串以在 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)]));
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - ['null' ,'' ,'undefined' ].indexOf(str) < 0 和 (str !== null || str !== '' || str !== undefined) 等价吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45668857/