试图理解javascript中的.some()
这是源代码的一部分 我试图理解试图理解javascript中的.some(),javascript,d3.js,Javascript,D3.js,这是源代码的一部分 我试图理解names.some(函数(d)…})是如何工作的 传递给.some()的匿名函数不应该返回一个可以对“countires”求值的条件语句吗 names.some(…)何时返回true或false 为什么不在没有“返回”的情况下在“国家”中创建“名称”属性 queue() .defer(d3.json,“world-110m.json”) .延期(d3.tsv,“世界国家名称.tsv”) .等待(准备好); 函数就绪(错误、世界、名称){ var countries
names.some(函数(d)…})
是如何工作的
.some()
的匿名函数不应该返回一个可以对“countires”求值的条件语句吗names.some(…)
何时返回true或falsequeue()
.defer(d3.json,“world-110m.json”)
.延期(d3.tsv,“世界国家名称.tsv”)
.等待(准备好);
函数就绪(错误、世界、名称){
var countries=topojson.feature(world,world.objects.countries).features
国家=国家。过滤器(功能(d){
返回名称.some(函数(n){
如果(d.id==n.id)返回d.name=n.name;
});
})
1)由于它使用的是名称.some()
,因此该函数正在测试名称的每个元素,而不是国家的
2) 当任何名称的id
与d.id
匹配且n.name
不为空时
3) 它将始终创建属性。但是如果没有返回
,。some()
不会得到它可以计算的真值
如果他们写下:
return names.some(function(n) {
if (d.id == n.id) {
d.name = n.name;
return d.name;
} else {
return false;
}
});
return d.name=n.name;
将赋值和返回值组合成一个语句。代码利用了函数在不执行return
语句时隐式返回undefined
,并且undefined
是错误的这一事实。非常感谢您的澄清。我有点赞同n由于.some()中的代码没有显式语句“return true”。因此,返回变量(d.name)也意味着true?我应该在哪个主题下了解这个概念?它只关心值是否为truthy。任何非空字符串都是truthy。请参阅