【发布时间】:2017-02-04 21:01:11
【问题描述】:
关于使用 lodash 的 forEach 循环内的返回行为的快速问题。
该函数应检查字符串是否以预定义的唯一前缀数组结尾,如果是,则返回删除该前缀的字符串。
当我调用 prefixParser('someString') 时,即使 if 语句匹配,它也总是返回 ('someString')。 foreEach/if 中的 return 不应该结束整个函数吗?
或者我错过了关于执行上下文的一些东西?
prefixParser(str) {
let value= str;
this.prepostfix.forEach( prefix => {
if(_.startsWith(value,prefix)){
return _.trimStart(value, prefix);
}
});
return value
}
改变返回到
value = _.trimStart(value, prefix)
解决了这个问题,但我想了解这里的机制。谢谢!
【问题讨论】:
-
prefix => { ... }本身就是一个函数,这就是内部返回的返回值。然而,返回的值被丢弃。更多信息在这里developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…和这里developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… -
forEach 返回的不是
undefined吗?在普通的 js 中它是这样工作的。 -
不知道
lodash,但你不能从 JavaScriptArray.prototype.forEach()返回,请使用Array.prototype.map()。
标签: javascript lodash