如何从Javascript中的函数访问变量

时间:2018-08-26 20:12:37

标签: javascript function variables

我想访问变量,即。在两个独立函数中的距离,vertex2Position,路径,在称为getResult的主函数中。如何在不更改代码或以最小方式更改代码的情况下实现这一目标。

#Collection.find(x => x.name === "name")

2 个答案:

答案 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”