Javascript:访问其他功能的返回

时间:2014-05-06 20:26:12

标签: javascript jquery function nested return

通过调用一个函数,我可以获得内部函数的返回吗?

function f1(...){
   f2(...);
}

function f2(...){
   return 123;
}

换句话说,只调用f1()我可以从f2返回123吗? 我希望这是有道理的。

提前致谢。

修改

我可能没有在这里做出最好的比喻,所以这是我的代码:

    getLocation(45.123,12.123);

function getLocation(a,b) {
  document.write(lo);
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(p){ajmo(p,a,b);});
  }
}

function ajmo(position,a,b) {
  lat = position.coords.latitude;
  lng = position.coords.longitude;
  alert('kurac:' + getDistanceFromLatLonInKm(a,b,lat, lng));
}


function getDistanceFromLatLonInKm(lat_origin, lon_origin, lat_pos, lon_pos) {
  var R = 6371;
  var dLat = deg2rad(lat_pos - lat_origin);
  var dLon = deg2rad(lon_pos - lon_origin);
  var a = 
    Math.sin(dLat / 2) * Math.sin(dLat / 2) +
    Math.cos(deg2rad(lat_origin)) * Math.cos(deg2rad(lat_pos)) * 
    Math.sin(dLon / 2) * Math.sin(dLon / 2)
    ; 
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  var d = R * c;
  return d;
}

function deg2rad(deg) {
  return deg * (Math.PI/180)
}

我想通过调用get.Location从函数getDistanceFromLatLonInKm的返回中访问d。在这种情况下可能吗?

4 个答案:

答案 0 :(得分:2)

您想要返回返回的值

function f1(...){
 return f2(...);
}

function f2(...){
 return 123;
}

alert(f1());//123

答案 1 :(得分:1)

如果要保存返回值,请使用:

function f1(...){
   var f2return = f2(...);
}

function f2(...){
   return 123;
}

如果您想直接返回,请使用@Travis Js代码。

我建议将返回值保存到变量中以便进一步处理,否则我只是直接调用f2。请记住,任何return语句都会退出当前函数。

答案 2 :(得分:1)

您还可以将上下文this传递给第二个函数。但是,在这种情况下,您必须按如下方式调用f2:

function f1(){

   return f2.call(this)

}

-

function f2(){
   return 123
}

更新:

当您使用面向对象编程(OOP)时,传递上下文非常有用:

I.E:

 function Person(bornYear){
    this.born=bornYear ; 
    this.age=Age.call(this,2014);   
     return this;
  }

function Age(currentYear){

  return currentYear-this.age; 

}

如果您注意到,this.age未定义,因为上下文this已从Person函数传递到Age函数。

测试此示例:

var abdennour=new Person(1989);
console.log(abdennour.age) // 25

答案 3 :(得分:1)

为什么不呢?

<!DOCTYPE html>

<html>

<head>

</head>

<body>
    <script>
        alert(f1());
        function f2() {
            return "Hello, I'm here";
        };
        function f1() {
            return f2();
        };
    </script>
</body>

</html>