javascript - 为什么我使用=(单个等于)的相等比较不能正常工作?

标签 javascript equality

我正在尝试检查字符串是否为空、小于或等于 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.length0 ,这就是代码所采用的路径。

关于javascript - 为什么我使用=(单个等于)的相等比较不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47867441/

相关文章:

javascript - JSRender如何访问 block 外变量

javascript - Fancybox2 使用 href 进行分组

haskell - Haskell中==和=之间的区别

closures - 如何测试函数和闭包的相等性?

javascript - 为什么我的工具提示没有显示?

javascript - 错误: TypeError: Cannot call method 'replace' of undefined

javascript - 如何检查文档是否存在而不检索它: Mongoose

javascript - 使用元组或对象进行映射

java - Java 是否保证 Object.getClass() == Object.getClass()?

java - 如何在 Java 中比较字符串?