Java和JavaScript中的变量范围是相同的。我在javascript中有一个变量,并在onLoad页面上分配。但是在我的项目中继续添加函数时,我将此变量设置为NULL。我多次检查这个变量没有再次分配,但很少的地方(在函数中)使用了同名的局部变量。我怀疑这会影响我的全局变量值。我现在有很多功能,我不想触摸它们。请帮我解决。
此处的代码: 在
<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);
}
}
答案 0 :(得分: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
我在javascript中有一个变量,并在onLoad Page上分配。但是在我的项目中不断添加函数时,我将此变量设为NULL。
听起来你在onLoad
运行之前使用了其他功能。 window
load
事件在页面加载中发生非常。
...但是很少的地方(在函数中)使用了具有相同名称的局部变量。我怀疑这会影响我的全局变量值......
如果您正确声明了局部变量,那么这样做会阻止您使用全局变量,但不会更改全局值。这就像Java(一个局部变量遮蔽实例成员)。
例如:
var x;
x = 42;
function foo() {
var x;
console.log(x); // undefined
}
foo();
console.log(x); // 42
x
内foo
与x
全局不一样。在x
中使用foo
使用x
中的foo
。在x
之外使用foo
使用全局。
答案 1 :(得分:0)
Java和JavaScript中的变量范围是否相同?
简答:不,变量在这些语言中有不同的范围。 Java中的变量有block scope,而在JavaScript中它们有function scope。