为什么对象方法不是 return 值?
Why does a object method not return a value?
在下面的代码中,函数 findById()
实际上并没有 return 任何东西。 console.log()
s 按预期触发并打印,但结果是调用函数的变量未定义。
我曾尝试更改 return 值类型,甚至只是将 return true;
放在末尾,没有条件,但它始终是未定义的。为了确保我没有遗漏一些简单的东西,我实际上创建了一个只有 return 值 istrue()
的函数。这实际上工作正常。
这是 object/method def
const database = {
// List of authenticated characters
characters: [],
addCharacter: function(c) {
this.characters.push(c);
},
findById: function(id) {
console.log('Searching for character...');
this.characters.forEach((c) => {
if (c.id === id) {
console.log('Found');
console.log('cid: ' + c.id);
console.log('id: ' + id);
return true; // Never actually returns
}
});
},
istrue: function() {
return true;
}
};
以及它被调用的地方
const find = database.findById(characterIdToFind);
console.log(typeof find); // always undefined
console.log(find); // always undefined
我希望在我尝试过的此函数的至少一种排列中存在某种 return 值。函数的 return 值永远不会有任何变化,只是 undefined
.
这是因为您正在尝试从 forEach
return 并且 forEach
没有 return 任何东西
嵌套函数中的 return
语句 return 来自函数。
在这种情况下,您可以使用 some()
而不是 forEach()
,因为您无法破坏 forEach
.
findById: function(id) {
console.log('Searching for character...');
return this.characters.some(c => c.id === id)
}
如果你想得到符合给定条件的对象,使用find()
findById: function(id) {
console.log('Searching for character...');
return this.characters.find(c => c.id === id)
}
如果您在上面的两种方法中都看到我们在每次迭代中隐式 returning c.id === id
但它不会从外部函数 return
。
在下面的代码中,函数 findById()
实际上并没有 return 任何东西。 console.log()
s 按预期触发并打印,但结果是调用函数的变量未定义。
我曾尝试更改 return 值类型,甚至只是将 return true;
放在末尾,没有条件,但它始终是未定义的。为了确保我没有遗漏一些简单的东西,我实际上创建了一个只有 return 值 istrue()
的函数。这实际上工作正常。
这是 object/method def
const database = {
// List of authenticated characters
characters: [],
addCharacter: function(c) {
this.characters.push(c);
},
findById: function(id) {
console.log('Searching for character...');
this.characters.forEach((c) => {
if (c.id === id) {
console.log('Found');
console.log('cid: ' + c.id);
console.log('id: ' + id);
return true; // Never actually returns
}
});
},
istrue: function() {
return true;
}
};
以及它被调用的地方
const find = database.findById(characterIdToFind);
console.log(typeof find); // always undefined
console.log(find); // always undefined
我希望在我尝试过的此函数的至少一种排列中存在某种 return 值。函数的 return 值永远不会有任何变化,只是 undefined
.
这是因为您正在尝试从 forEach
return 并且 forEach
没有 return 任何东西
嵌套函数中的 return
语句 return 来自函数。
在这种情况下,您可以使用 some()
而不是 forEach()
,因为您无法破坏 forEach
.
findById: function(id) {
console.log('Searching for character...');
return this.characters.some(c => c.id === id)
}
如果你想得到符合给定条件的对象,使用find()
findById: function(id) {
console.log('Searching for character...');
return this.characters.find(c => c.id === id)
}
如果您在上面的两种方法中都看到我们在每次迭代中隐式 returning c.id === id
但它不会从外部函数 return
。