我正在尝试检查字符串是否为空,小于或等于9位数,或最多10位数。但它始终遵循else if (str.length <= 9)
。
if (str = ''){
console.log("The string cannot be blank");
} else if (str.length <= 9) {
console.log("The string must be at least 9 characters long");
} else if (str.length <= 10) {
console.log("The string is long enough.");
}
无论我投入什么,我总是得到The string must be at least 9 characters long
。为什么呢?
答案 0 :(得分:7)
=
始终是作业。平等比较是==
(松散,强制类型以尝试匹配)或===
(无类型强制)。
所以你想要
if (str === ''){
// -----^^^
不
// NOT THIS
if (str = ''){
// -----^
执行if (str = '')
后会发生什么?分配 str = ''
已完成,然后测试结果值(''
),就像这样(如果我们忽略了一些细节):
str = '';
if (str) {
由于''
是JavaScript中的 falsy 值,因此该检查将为false并进入else if (str.length <= 9)
步骤。从那时起,str.length
为0
,这就是代码所采用的路径。