通过调用一个函数,我可以获得内部函数的返回吗?
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。在这种情况下可能吗?
答案 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>