gpt4 book ai didi

作为参数传递的 JavaScript typeof 函数返回未定义

转载 作者:搜寻专家 更新时间:2023-11-01 04:30:38 24 4
gpt4 key购买 nike

下面的示例工作正常,但是,我试图使函数 handleArcs() 更通用(即 handleLayer())。

我的 layerVar 有一个属性 onEachFeature,它将 onEachArc 方法应用于图层的每个特征。我希望 handleArcs() 将函数 onEachArc() 作为参数,但它不起作用,当我传递它并使用 typeof 进行检查时>,结果为 undefined。基本上它是将一个函数作为参数传递给另一个函数的简单方法,但在这种情况下不起作用。

我的第一个假设是上下文 this 有问题。但是因为 typeof thisShouldBeAFunction 返回 undefined 我现在不确定问题是什么。

任何猜测可能是问题的原因是什么?

function onEachArc(feature, layer) {
if (feature.properties) {
layer.bindPopup("<b>" + feature.properties.linkstr + "</b> has speed " + feature.properties.speed + ".");
}
};

function handleArcs(data, layerVar, layerName, thisShouldBeAFunction) {
alert(typeof thisShouldBeAFunction);

//Add the feature to the map
layerVar = new L.geoJson(data, {
onEachFeature: onEachArc
}).addTo(map);
}

getData('Layers/arcs.json').done(handleArcs(arcs, "Arcs", onEachArc));

getData() 调用 jQuery AJAX 方法从服务器获取数据:

 function getData(url) {
return $.ajax({
url : url,
type: 'GET',
error : function (xhr,status,error){alert("An error happened while loading a file: "+error+".")}
});
}

最佳答案

正如@Tushar 所说,不要立即调用handleArcs,将其包装在具有适当签名的匿名函数中并将其传递给done

getData('Layers/arcs.json').done(function(data) { 
handleArcs(data, arcs, "Arcs", onEachArc);
});

我不太明白

layerVar = new L.geoJson(...

handleArcs 中。您不希望此赋值影响您传入的 arcs 变量,是吗?

关于全局变量作为参数:

var aGlobal = "Test_One";

function TryToChangeIt(aParam) {
aParam = "Test_Two";
}

function MyFunction(aParam) {
alert("Before: " + aGlobal);

TryToChangeIt(aGlobal);

alert("After: " + aGlobal);
}

通过调用 TryToChangeIt(aGlobal);,我们正在传递全局变量的值 - 不是名称。 javascript 引擎创建一个新的临时变量作为参数,并在调用 TryToChangeIt 之前将 aGlobal 的值分配给它。在 TryToChangeIt 中,我们可以更改此临时变量的值,但这不会影响 aGlobal 的值。

关于作为参数传递的 JavaScript typeof 函数返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32913630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com