将一个变量传递给回调函数,但它出现为 'undefined'
Passing a variable into a callback function but it's coming up as 'undefined'
我试图将一个变量传递给一个回调函数,该回调函数是 Azure Maps 的事件侦听器的一部分,但是一旦我 console.log 另一个函数中的变量,该变量就会显示为 'undefined' .不知道我做错了什么。我是否以错误的方式将变量传递给回调函数?
loadData = () => {
let dataSource = new window.atlas.source.DataSource('map', {
cluster: true,
clusterRadius: clusterRadiusLevel,
clusterMaxZoom: maxClusterZoomLevel
});
maps.event.add('click', layer, (e,dataSource) => this.clickedCluster(e,dataSource)
}
clickedCluster = (e,dataSource) => {
console.log(dataSource)
}
loadData 函数肯定还有更多功能,但提供了足够的信息说明我正在尝试做什么。 clickedCluster 中的 console.log 不断返回未定义。我知道它不是未定义的,因为我在 loadData 函数中记录了变量,并且我得到了一个包含所有数据的对象。
首先,您在 maps.event...
行中缺少右括号。
其次,不要将 dataSource
作为匿名箭头函数的第二个参数包含在同一行中:
let loadData = () => {
let dataSource = new window.atlas.source.DataSource('map', {
cluster: true,
clusterRadius: clusterRadiusLevel,
clusterMaxZoom: maxClusterZoomLevel
});
maps.event.add('click', layer, e => this.clickedCluster(e, dataSource));
};
let clickedCluster = (e, dataSource) => {
console.log(dataSource)
};
强调为什么这是正确的,看看这个更简单的例子
let callback = a => console.log('callback', a);
let x = 'hello';
let caller1 = x => callback(x);
let caller2 = () => callback(x);
caller1(); // undefined
caller2(); // 'hello'
这被称为 "shadowing" 顺便说一句 (wiki)。
我试图将一个变量传递给一个回调函数,该回调函数是 Azure Maps 的事件侦听器的一部分,但是一旦我 console.log 另一个函数中的变量,该变量就会显示为 'undefined' .不知道我做错了什么。我是否以错误的方式将变量传递给回调函数?
loadData = () => {
let dataSource = new window.atlas.source.DataSource('map', {
cluster: true,
clusterRadius: clusterRadiusLevel,
clusterMaxZoom: maxClusterZoomLevel
});
maps.event.add('click', layer, (e,dataSource) => this.clickedCluster(e,dataSource)
}
clickedCluster = (e,dataSource) => {
console.log(dataSource)
}
loadData 函数肯定还有更多功能,但提供了足够的信息说明我正在尝试做什么。 clickedCluster 中的 console.log 不断返回未定义。我知道它不是未定义的,因为我在 loadData 函数中记录了变量,并且我得到了一个包含所有数据的对象。
首先,您在 maps.event...
行中缺少右括号。
其次,不要将 dataSource
作为匿名箭头函数的第二个参数包含在同一行中:
let loadData = () => {
let dataSource = new window.atlas.source.DataSource('map', {
cluster: true,
clusterRadius: clusterRadiusLevel,
clusterMaxZoom: maxClusterZoomLevel
});
maps.event.add('click', layer, e => this.clickedCluster(e, dataSource));
};
let clickedCluster = (e, dataSource) => {
console.log(dataSource)
};
强调为什么这是正确的,看看这个更简单的例子
let callback = a => console.log('callback', a);
let x = 'hello';
let caller1 = x => callback(x);
let caller2 = () => callback(x);
caller1(); // undefined
caller2(); // 'hello'
这被称为 "shadowing" 顺便说一句 (wiki)。