我正在尝试检查字符串是否为空、小于或等于 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
。为什么?
最佳答案
=
始终是作业。相等比较是==
(松散,强制类型尝试进行匹配)或 ===
(无类型强制)。
所以你想要
if (str === ''){
// -----^^^
不是
// NOT THIS
if (str = ''){
// -----^
当你这样做时会发生什么 if (str = '')
是作业 str = ''
完成后,然后测试结果值( ''
),就像这样(如果我们忽略一些细节):
str = '';
if (str) {
自 ''
在 JavaScript 中是一个 falsy 值,该检查将为 false,并且会转到 else if (str.length <= 9)
步。从那时起,str.length
是 0
,这就是代码所采用的路径。
关于javascript - 为什么我使用=(单个等于)的相等比较不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47867441/