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