Javascript函数返回未定义的值,即使console.log显示正确的值
我检查了其他似乎重复的问题,但没有一个解决了我的问题。我有一个简单的函数,它在规则对象数组中循环,并返回具有匹配“type”的对象: 我按如下方式调用此函数:Javascript函数返回未定义的值,即使console.log显示正确的值,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我检查了其他似乎重复的问题,但没有一个解决了我的问题。我有一个简单的函数,它在规则对象数组中循环,并返回具有匹配“type”的对象: 我按如下方式调用此函数: var wordCountRule = $ctrl.findRule("word_count"); console.log(wordCountRule); 我在控制台上看到返回规则:word\u count,然后控制台.log(wordCountRule)显示未定义的。我什么都试过了,不知道为什么会这样 谢谢 问题是因为您是从内部for
var wordCountRule = $ctrl.findRule("word_count");
console.log(wordCountRule);
我在控制台上看到返回规则:word\u count
,然后控制台.log(wordCountRule)
显示未定义的。我什么都试过了,不知道为什么会这样
谢谢 问题是因为您是从内部forEach
处理程序函数返回值,而不是从外部findRule()
函数返回值
要解决此问题,可以定义一个变量来保存返回值,并在内部范围内对其进行修改:
$ctrl.findRule = function(ruleName) {
var returnVal = null;
$ctrl.rules.forEach(function(rule) {
if (rule.type === ruleName) {
returnVal = rule;
}
});
return returnVal;
};
但是,您应该注意,您正在寻找一个值,可以直接使用find()
,而无需显式循环:
$ctrl.findRule = function(ruleName) {
return $ctrl.rules.find(function(rule) {
return rule.type === ruleName;
});
};
$ctrl.findRule = function(ruleName) {
return $ctrl.rules.find(function(rule) {
return rule.type === ruleName;
});
};