Javascript 条件不适用于 OR IF AND



无法找出我在以下代码中写错的内容,因此它不会返回 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;
}

问题是您比较类型而不是(typeof radioValue === 'scheduleademo')中的值。您可能想比较这些值,例如(radioValue === 'scheduleademo')

JavaScript 中的typeof运算符返回给定操作数的类型。 由于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;
}

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

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

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

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

typeof 返回变量的基元类型。可以是"数组"、"字符串"、"数字"。不是实际值。

typeof radioValue === 'scheduleademo'

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

在这种情况下,它应该返回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;}

最新更新