我有以下代码行。我感到困惑,为什么我收到“ Uncaught TypeError:checkDistance不是一个函数”错误。
当我仅使用功能checkDistance(a,b)时,它工作正常。但是用下面的代码我得到了那个错误。
有人可以告诉我我的错误吗?
var gjLayer = L.geoJson(testCities, {
onEachFeature: function(feature, layer) {
var features = feature.geometry;
var dist = checkDistance(features.coordinates[1], features.coordinates[0]);
content = '<div class="container"><div class="row">'+dist+'<span>Name:</span>'+feature.properties.name+'</div></div>';
layer.bindPopup(content);
}
});
var checkDistance = function(lat1, lon1) {
...
...
return
}
答案 0 :(得分:2)
function checkDistance(lat1, lon1) {
...
...
return
}
这将解决您的错误。由于起重,它的行为。 声明前的using函数。
答案 1 :(得分:2)
答案 2 :(得分:1)
请查看起重基础知识。现在,在下面的代码中将不会出现“ Uncaught TypeError:checkDistance is a function”。始终在使用前定义函数表达式。
function checkDistance(lat1, lon1) {
return ;
}
var gjLayer = L.geoJson(testCities, {
onEachFeature: function(feature, layer) {
var features = feature.geometry;
var dist = checkDistance(features.coordinates[1], features.coordinates[0]);
content = '<div class="container"><div class="row">'+dist+'<span>Name:</span>'+feature.properties.name+'</div></div>';
layer.bindPopup(content);
}
});
答案 3 :(得分:1)
在顶部声明变量! 吊装(对于许多开发人员而言)是JavaScript的未知或被忽略的行为。
如果开发人员不理解吊装,程序可能包含错误(错误)。
为避免错误,请始终在每个作用域的开头声明所有变量。
因为这是JavaScript解释代码的方式,所以它总是一个好规则。
答案 4 :(得分:0)
checkDistance = function(lat1,lon1){ ... ... 返回 }
答案 5 :(得分:0)
用var checkDistance = function(lat1, lon1)
来function checkDistance(lat1, lon1)
您的问题将得到解决。您正在吊装。