2013-11-01 65 views
-3

變量的作用域在Java和JavaScript中都是相同的。我在javascript中有一個變量,並在onLoad Page上分配。但同時繼續在我的項目中添加功能,我將這個變量作爲NULL。我多次檢查這個變量沒有再次分配,但幾個地方(在函數中)使用了具有相同名稱的局部變量。我懷疑這會影響我的全局變量值。我現在擁有巨大的功能,我不想碰它們。請幫我解決。變量在javascript中無效

代碼在這裏: 在

<script> 
// other variables goes here. 
    var BUSINESS_CODE_CUSEUR = "<%=BusinessLine.BUSINESS_LINE_CODE_GLOBAL_CUSTODY_UK%>"; 
    var branchId = null; 
//on Refresh branch, 
function refreshByBranch(){ 
      branchId = dijit.byId("branchList").attr("value"); 
     // other functions calling here who ever is depending on branch. 
         searchTeamList(branchId); 
      searchCustomer(branchId); 
      searchClientRelationshipFsList(); 
//and so on. 
} 

//my function is here: calling on an image click. 
function showSelectRootCauseDialog(){ 
    var br = dijit.byId("branchList").attr("value"); 
    console.info("showSelectRootCauseDialog - branchId:" + branchId); 
    console.info("showSelectRootCauseDialog - br:" + br); 
// getting null on line 2. 
} 
</script> 

- 問題就在這裏解決了這個樣子。我們對每個功能進行了更改。

function refreshByBranch(){ 
       branchId = dijit.byId("branchList").attr("value"); 
       var url = contextPath + "/" + servlet + "?cmd_query_for_user=1&branchId=" + branchId; 
       originatorUserStore.url = url; 
       ownerUserStore.url = url; 
       resolverUserStore.url = url; 
       searchTeamList(branchId); 
       searchCustomer(branchId); 
       searchClientRelationshipFsList(); 
       if(currentBusinessLineCde == gcBusinessLineCde){ 
       // var branchId = dijit.byId("branchList").attr("value"); 
////-- Problem solved here. by making comment. 
        searchGroupList(branchId); 
        searchLocationList(branchId); 
        searchClientList(branchId); 
        searchAccountManagerList(branchId); 
       } 
      } 
+1

某些代碼示例可能有助於解決您的問題。 –

+0

@Yagnesh,我添加了幾行代碼。 – CHowdappaM

+0

現在通過將其他函數中的所有變量重命名爲其他內容來解決此問題。可以告訴我這裏有什麼問題。 – CHowdappaM

回答

0

是變量在Java和JavaScript範圍相同。

不,但它是相似的。首先,JavaScript沒有塊範圍; Java的確如此。因此,例如,在JavaScript:

for (var i = 0; i < someLimit; ++i) { 
    // do something 
} 
console.log(i); // Works, the variable exists outside the loop; it wouldn't in Java 

更多:Poor misunderstood var

我在JavaScript中有一個變量,當分配的onLoad頁。但同時繼續在我的項目中添加功能,我將這個變量作爲NULL。

聽起來好像您在運行onLoad之前使用了其他函數。 windowload發生的事件非常在頁面加載後期。

...但很少地方(在函數中)使用具有相同名稱的局部變量。我懷疑,這會影響我的全局變量值...

如果你正確地聲明的局部變量,這樣做會阻止你使用的全球性的,但不會改變全球的價值。這就像Java(一個影射實例成員的局部變量)。

例如:

var x; 
x = 42; 

function foo() { 
    var x; 

    console.log(x); // undefined 
} 

foo(); 
console.log(x); // 42 

foox是不一樣的x全球。在foo內使用x使用foo內的x。外部使用xfoo使用全局。

0

在Java和JavaScript中,變量的作用域是否相同?

簡答:不,變量在這些語言中有不同的範圍。 Java中的變量有block scope,而在JavaScript中它們有function scope