JavaScript条件不适用于OR IF AND

时间:2018-07-06 06:41:01

标签: javascript

无法找出我在以下代码中写的不正确,因此它不会返回false。调试时发现

中有错误
((typeof radioValue === 'scheduleademo') && date1 === '')

因为它在执行过程中具有以下值

radioValue = "scheduleademo", date1 = ""

如果满足以下条件,则完成:

if (name === '' || emailID === '' || phone === '' || companyname === '' || noofemployees === null || message === '' ||
  radioValue === '' || (typeof radioValue === 'undefined') || ((typeof radioValue === 'scheduleademo') && date1 === '')) {
  return false;
}

4 个答案:

答案 0 :(得分:1)

问题是您比较类型而不是(typeof radioValue === 'scheduleademo')中的值。您可能想要比较类似(radioValue === 'scheduleademo')

的值

JavaScript中的typeof operator返回给定操作数的类型。 由于为radioValue指定了一个字符串,因此typeof radioValue将返回'string'。这就是(typeof radioValue === 'scheduleademo')总是返回false的原因。

完成更正的代码:

if (name === '' || emailID === '' || phone === '' || companyname === '' || noofemployees === null || message === '' ||
  radioValue === '' || (typeof radioValue === 'undefined') || ((radioValue === 'scheduleademo') && date1 === '')) {
  return false;
}

答案 1 :(得分:0)

typeof返回变量的原始类型。可以是“数组”,“字符串”,“数字”。不是实际值。

typeof radioValue === 'scheduleademo'

这将始终是错误的。永永远远。请检查定义的类型:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

答案 2 :(得分:0)

typeof是一元运算符,它仅返回类型,例如:

typeof "scheduleademo" //"string"
typeof 2 //"number"

您应该使用它来检查变量类型是否与字符串不匹配

typeof radioValue === 'scheduleademo' radioValue === 'scheduleademo'typeof radioValue === 'undefined'

答案 3 :(得分:0)

在这种情况下,它应该返回false,因为typeof属性将返回数据类型,例如数组,字符串,对象等。

typeof radioValue应该是返回值,不是类型。 scheduleademo不是有效的类型,因此您可以使用(typeof radioValue === 'string')来检查其是否符合要求的条件。

在这里请注意,我假设scheduleademo是一个字符串。

正确答案:

if (name === '' || emailID === '' || phone === '' || companyname === '' || noofemployees === null || message === '' || radioValue === '' || (typeof radioValue === 'undefined') || ((typeof radioValue === 'string') && date1 === '')) { return false; }