带3个参数的JavaScript if条件表达式?

带3个参数的JavaScript if条件表达式?,javascript,if-statement,Javascript,If Statement,这是我关于stackoverflow的第一个问题,如果我还没有掌握所有的礼仪,请原谅我 我正在尝试使用以前用JavaScript编写的脚本。代码中有一个if条件表达式我不理解。它让我困惑的原因是它有3个参数。我从未在任何语言中见过这样的if条件表达式,甚至在上的JavaScript“if”教程中也没有见过。我正在处理的代码片段如下所示 if (this.css(alldivs[i], "contentdiv", "check")){ //check for DIVs with class "co

这是我关于stackoverflow的第一个问题,如果我还没有掌握所有的礼仪,请原谅我

我正在尝试使用以前用JavaScript编写的脚本。代码中有一个if条件表达式我不理解。它让我困惑的原因是它有3个参数。我从未在任何语言中见过这样的if条件表达式,甚至在上的JavaScript“if”教程中也没有见过。我正在处理的代码片段如下所示

if (this.css(alldivs[i], "contentdiv", "check")){ //check for DIVs with class "contentdiv"
    setting.contentdivs.push(alldivs[i])
    alldivs[i].style.display="none"}
我的问题是:如果(foo,bar,“check”)是什么意思?这是JavaScript中旧的不推荐使用的字符串比较函数吗?为什么if条件表达式中有3个变量而不是2个

与以下代码相比,前面代码的优点是什么:

if (this.css(alldivs[i] === "contentdiv") 

谢谢你的帮助。

我们来分析一下这里发生的事情。在这方面:

if (this.css(alldivs[i], "contentdiv", "check"))
你有两件事要做

  • 您有一个函数调用this.css(alldivs[i],“contentdiv”,“check”)
  • 您有一个检查上一次函数调用返回值的
    if()

  • 这相当于此扩展代码:

    var returnVal = this.css(alldivs[i], "contentdiv", "check");
    if (returnVal) {
        setting.contentdivs.push(alldivs[i]);
        alldivs[i].style.display="none";
    }
    
    这:

    相当于:

    var temp = this.css(alldivs[i], "contentdiv", "check");
    if (temp) {
    

    所以你看,这不是一个如果取三个参数。它是一个带有一个参数的if,恰好是一个包含三个参数的函数调用。

    很难知道答案对您有什么帮助,因为您的问题是关于示例中没有出现的代码。在这种情况下:

    if (this.css(alldivs[i], "contentdiv", "check"))
    
    该条件基于调用
    this.css
    的返回值。在您似乎感兴趣的示例中:

    if(foo, bar, "check") 
    
    答案是,由于JavaScript中的行为方式,它的计算结果总是正确的

    如果(foo,bar,“check”)

    当使用逗号分隔的表达式创建条件表达式时,只有最后一个表达式起作用(不过也会执行前面的表达式)

    那么,代码相当于:

    foo;
    bar;
    if("check") { /*...*/ }
    
    但你有这个:

    if (this.css(alldivs[i], "contentdiv", "check"))
    
    这意味着:

  • 运行
    this.css(alldivs[i],“contentdiv”,“check”)
    ,其中
    this
    是一个具有方法
    css
    (方法是一个作为对象属性的函数)的对象

  • 检查返回的值

  • 也许你会通过这种方式更好地理解它:

    var temp = this.css(alldivs[i], "contentdiv", "check");
    if(temp) { /* ... */ }
    

    if
    iself正在检查函数
    this.css()
    的返回值。函数有3个参数,但if没有。这不是三个值,它是一个方法调用…这不是一个有3个参数的if。它是一个带有一个参数的if,恰好是一个带有三个参数的函数调用。看看括号。除了,你最初的解释不是OP代码中发生的事情。我不知道为什么你解释的东西甚至不是OP代码的一部分而让事情变得混乱。@jfriend00是的,但OP问这个问题,所以我两个都回答了。啊,是的,我看到了我的错误,谢谢。然而,这给我提出了另一个问题。css()方法使用3个参数做什么?根据,当使用css()获取时,与设置css值相反,它只接受一个参数,一个属性或属性数组。那么,为什么在这种情况下需要3个参数呢?谢谢您在这方面的帮助。@LeonardShelby-jQuery的
    .css()
    方法不接受3个参数。您没有显示上下文,让我们知道这是什么或
    .css()
    。如果你能展示一个更大的代码上下文,我们也许能对这方面的事情发表评论。我只是假设
    .css()
    与jQuery不同。
    var temp = this.css(alldivs[i], "contentdiv", "check");
    if(temp) { /* ... */ }