我需要将变量传递给另一个函数,但它没有返回任何东西。 注意:它不会向外部返回任何内容,但如果我在函数内部执行 document.write,它会完美地工作..
<script type="text/javascript">
//funtion1
if (navigator.geolocation){
navigator.geolocation.getCurrentPosition(Location);
}
function Location(position){
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
return (latitude,longitude);
}
//function2
function initialize() {
document.write(latitude);
document.write(longitude);}
</script>
最佳答案
您误解了一些概念。
首先,return (a, b)
将评估为return b
。几乎从不需要逗号运算符。如果要返回数组,请使用 return [a, b]
。
其次,getCurrentPosition
是异步的。如果找到位置,它将执行 Location
。所以在你调用 document.write
时,位置还没有被获取。
最后,您根本没有使用返回值。如果要使用函数的返回值,请使用例如var 结果 = func(...)
。然而,在这种情况下,这是没有意义的。
我不完全知道你在追求什么,但任何依赖于位置的东西都应该放在回调中(在本例中为 Location
)。只有当回调被调用时,毒药才可用。在此回调中返回一些东西是没有意义的,因为返回值不用于 getCurrentPosition
。
编辑:查看您的代码,您想要这样的东西而不是return
ing:
function Location(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
useValuesForSomethingElse(latitude, longitude); // call other function with position data
}
关于javascript - 为什么这个函数不返回任何值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8415174/