带3个参数的JavaScript if条件表达式?
这是我关于stackoverflow的第一个问题,如果我还没有掌握所有的礼仪,请原谅我 我正在尝试使用以前用JavaScript编写的脚本。代码中有一个if条件表达式我不理解。它让我困惑的原因是它有3个参数。我从未在任何语言中见过这样的if条件表达式,甚至在上的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
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"))
你有两件事要做
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) { /* ... */ }