我想访问变量,即。在两个独立函数中的距离,vertex2Position,路径,在称为getResult的主函数中。如何在不更改代码或以最小方式更改代码的情况下实现这一目标。
#Collection.find(x => x.name === "name")
答案 0 :(得分:0)
您应该使用类似这样的内容:
var container = (function(){
var distance;
var vertex2P;
return {
setDistance: function(distance){
this.distance = distance;
},
getDistance: function(){return this.distance;},
setVertex2P: function(vertex2P){
this.vertex2P = vertex2P;
},
getVertex2P: function(){return this.vertex2P;},
}}());
然后您可以在其他函数中获取并设置值
var result = function(){
container.setDistance(2);
container.setVertex2P(3);
console.log(container.getDistance() + container.getVertex2P());
}
result(); // 5
这些(也许)是您可以在Javascript中使用的最佳实践,它避免了全局变量,并为变量增加了保密性,希望对您有所帮助。
附注:您可以使用ECMASCRIPT 6对此做个简短的说明
答案 1 :(得分:-1)
在javascript中,您需要了解范围。在您的代码中 主要范围是getResult()函数,因此如果要访问 子函数内的变量(getResult()中的函数 函数),则需要在此main的开头声明变量 范围。
示例:
function getResult() {
var distance,
path,
vertex1,
vertex2,
vertex1Position,
vertex2Position = 0;
document.getElementById("vertex1").onchange = function() {
vertex1 = document.getElementById("vertex1").value;
vertex1Position = graph.node.findIndex(e => e.id == vertex1) + 1;
document.getElementById("output").textContent = vertex1Position;
distance = execute(vertex1Position);
}
document.getElementById("vertex2").onchange = function() {
vertex2 = document.getElementById("vertex2").value;
vertex2Position = graph.node.findIndex(e => e.name == vertex2)+ 1;
document.getElementById("secondOutput").textContent = vertex2Position;
path = getPath(vertex2Position); //How can I access path in var result
};
result = distance.vertex2Position;
document.getElementById("searchResult").innerHTML = "test" + result + "" + path + ".";
}
注意:您正在使用由“ onchange”事件触发的函数,因此您的变量将以未定义的形式初始化,除了“ vertex2Position”