javascript - ['null' ,'' ,'undefined' ].indexOf(str) < 0 和 (str !== null || str !== '' || str !== undefined) 等价吗?

标签 javascript null undefined indexof

你知道下面两个函数是否等价吗?

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/

相关文章:

javascript - 仅使用 JavaScript 删除 iframe 脚本标签

javascript - Firebase + React Native - 获取每个文档 ID

javascript - 无法读取 JavaScript 中未定义数组错误的属性长度?

visual-studio-2010 - 未定义值??[cvFindContours] [轮廓]

php - OO PHP undefined variable

javascript - firefox 针对innerHTML iframe 标签的BUG

javascript - chrome 扩展中的内容脚本和背景页面之间的消息传递无法正常工作

java - 从 jsp 页面接收 'null' 值到 Struts2 Action

ios - TableView :cellForRowAtIndexPath called with nil indexPath after deleting item

php - 如何检查 MySQL 列以确保它包含值?