2010-02-17 116 views
1

快速,可能簡單的問題,其答案可能是使用「最佳實踐」Dashcode中的代碼翻譯

我下面的自定義模板移動的Safari Web應用程序的教程,和改變周圍的這段代碼的觀點:

function btnSave_ClickHandler(event) 
{ 
    var views = document.getElementById('stackLayout'); 
    var front = document.getElementById('mainScreen'); 
    if (views && views.object && front) { 
     views.object.setCurrentView(front, true); 
    } 
} 

我的問題只是關於if條件陳述。這個三元組是什麼意思,以及爲什麼在視圖可以改變之前需要驗證每一件事情? views.object只是測試以查看視圖變量是否響應對象方法?爲什麼這很重要?

編輯 - 這是/是這個問題的要點,並認爲不是JavaScript作爲一種語言和if迴路是如何工作的,而是爲什麼這些三兩件事特別需要檢查:

在什麼情況下viewsfront不存在?

我通常不會那麼冗長地寫我的代碼。如果我的MySQL表的名稱沒有改變,我只想說UPDATE 'mytable' WHERE...,而不是更詳細的(在我看來,冗餘)

$mytable = "TheSQLTableName"; 
if ($mytable == an actual table && $mytable exists && entries can be updated){ 
    UPDATE $mytable; 
} 

然而,如果表的名稱(或JS例子,視圖的名稱)不是「硬編碼」,而是用戶輸入或其他方式可變的,我可能會對DashCode示例中的代碼進行調整。所以告訴我,無論如何,這些值是否會「出錯」?

謝謝!

回答

1

該if是測試這3個指針,以確保它們是非空的。空指針是0,它轉換爲false。如果這3個指針中的任何一個是0(空),那麼它將不會嘗試使用它們。

我不確定在JavaScript中如何解引用空指針,但它是一個錯誤,可能會導致異常。如果只是避免這種可能性。