为什么我的平等比较使用=(一个等于)正常工作?
我试图检查一个string是否为空,小于或等于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."); }
不pipe我放什么,我总是得到The string must be at least 9 characters long
。 为什么?
=
总是分配。 平等比较是==
(宽松,强制types来尝试匹配)或===
(无types强制)。
所以你要
if (str === ''){ // -----^^^
不
// NOT THIS if (str = ''){ // -----^
if (str = '')
是完成赋值 str = ''
,然后结果值( ''
)被testing,如果我们忽略了一些细节,那么会发生什么?
str = ''; if (str) {
由于JavaScript在JavaScript中是一个falsy值,因此该检查将是错误的,并且else if (str.length <= 9)
步骤转到else if (str.length <= 9)
。 由于在那个时候, str.length
是0
,这就是代码的path。