【问题标题】:'if' statements don't function correctly'if' 语句不能正常工作
【发布时间】:2011-03-14 14:39:46
【问题描述】:

我正在编写一些涉及从多个函数跳转的 jQuery 代码。在一个函数中,“if”语句用于选择代码下一步将去哪里。 if 语句的条件是从前一个函数传递的变量的值。因此,为了澄清,一个函数将一个变量传递给另一个函数,然后该函数会转到另一个函数,该函数是根据它起源的函数来选择的。

这是我在 JSFiddle 中的代码:http://jsfiddle.net/VFVk7/

如您所见,当您单击任何按钮时,它会转到 If 语句中的所有可选功能,而不仅仅是一个。有谁知道为什么会这样?非常感谢!

【问题讨论】:

    标签: javascript function if-statement


    【解决方案1】:

    通过编写if(origin = 'go1'),您'go1' 分配给origin 变量,并将该分配的结果(即字符串'go1')传递给if声明。
    由于所有非空字符串在 Javascript 中都是“真实的”,这相当于if (true),并且所有if 语句都会执行。

    您需要比较'go1'origin 变量,方法是编写if (origin === 'go1')

    总结

    • = 运算符为变量赋值
    • == 运算符执行松散比较(例如,true == '1'8 == '8'16 == '0x10'false == [])。
    • === 运算符执行严格比较。 (以上示例均不适用于===

    【讨论】:

    • 非常感谢 SLaks 的所有澄清!
    【解决方案2】:

    你有类似的代码

    if(origin = 'go1')
    

    其中 'go1' 分配给变量origin(并检查它是否为“真”——它是)。
    试试吧:

    if(origin == 'go1')
    

    比较而不是分配

    【讨论】:

      【解决方案3】:

      常见问题。在 Java 中它会给出一个编译错误,在 Javascript 中它会工作得很好,可能不是你想要的那样。 = 登录 Javascript 不执行相等操作。

      【讨论】: