2014-05-07 63 views
-2

这是我的计算器上的第一个问题,所以请原谅我,如果我没有得到所有的礼仪呢。JavaScript是否带有3个参数的条件表达式?

我试图用JavaScript编写一个脚本以前的工作。在代码中有一个if条件表达式,我不明白。我感到困惑的原因是它有三个参数。我从来没有在任何语言中看到像这样的条件表达式,或者甚至在http://www.w3schools.com/js/js_if_else.asp的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,酒吧,“检查”)是什么意思?这是JavaScript中旧的弃用字符串比较函数吗?为什么if条件表达式中有3个变量而不是2?

什么是以前的代码的优势,相对于类似:

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

谢谢您的帮助。

+1

的'if' iself正在检查功能'this.css()'的返回值。有3个参数的函数,但是if没有。 – DontVoteMeDown

+4

这些不是_three_值,它是_one_方法调用... – CBroe

+2

这不是一个如果有3个参数。这是一个如果与一个参数恰好是一个函数调用三个参数。看看括号。 –

回答

1

让我们打破这里发生了什么。在这一行:

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

你有两件事情正在进行。

  1. 您有一个函数调用this.css(alldivs[i], "contentdiv", "check")
  2. 你有一个if()从以前的函数调用

这相当于这个扩展代码检查返回值:

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

啊,是的,我看到我的错误,谢谢。然而,这给我提出了另一个问题。 css()方法对3个参数有什么作用? 根据,当使用css()获取,而不是设置一个css值时,它只接受一个参数,一个属性或一个数组属性。那么为什么在这种情况下它需要3个参数?感谢您对此的帮助。 – LeonardShelby

+0

@LeonardShelby - jQuery的'.css()'方法不需要3个参数。你没有显示我们知道什么是'this'或'.css()'的情况。如果您可以展示更大的代码上下文,我们可以对事物的这方面发表评论。我只是假定'.css()'是一个与jQuery不同的'.css()'。 – jfriend00

1

此:

if (this.css(alldivs[i], "contentdiv", "check")) { 

就等于这个:

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

所以你看,这不是一个是否服用三个参数。这是一个如果有一个参数碰巧是一个函数调用,需要三个参数。

1

很难知道答案会帮助你,因为你的问题是关于没有出现你的样本代码。在这种情况下:

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

条件是基于呼叫this.css的返回值。在样品你似乎兴趣:

if(foo, bar, "check") 

答案是,它是总是会评估为真,因为Comma Operator的行为在JavaScript的方式。

1

什么if(foo, bar, "check")

,当你用逗号分隔的表达式,只有最后一个事项(以前的也执行,虽然)条件。

然后,代码等同于:

foo; 
bar; 
if("check") { /*...*/ } 

但是你有这样的:

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

这意味着:

  1. 运行this.css(alldivs[i], "contentdiv", "check"),其中this是一个对象,有一个方法css(方法是一个函数h是对象的属性)。

  2. 检查返回的值。

也许你会更好的理解是这样:

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

除了您的初始解释不是OP代码中发生的情况。不知道为什么你通过解释一些甚至不是OP代码的一部分来混淆事物。 – jfriend00

+0

@ jfriend00是的,但OP要求,所以我回答了两个。 – Oriol

相关问题