2014-05-07 64 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

相關問題