如何不使用箭头语法编写JS中结合some()函数的if语句?
当然可以用普通函数改写这个if语句!
你遇到的问题其实是普通函数和箭头函数的一个小区别——返回值的写法。
箭头函数在只有单条表达式的时候,会自动返回表达式的结果,不用写return:
// 箭头语法:隐式返回 e.label === filter_object.label 的结果 if (!filters.some(e => e.label === filter_object.label)) { // Do Something }
但普通函数没有这个“隐式返回”的特性,你原来的写法里,函数内部只写了判断语句,却没有显式返回结果,这时候函数默认返回undefined。而some方法会把undefined当作false处理,导致some永远返回false,外层的!就会把它转成true,不管数组里有没有匹配的元素,都会执行if块里的代码。
只需要给普通函数加上return,就能正常工作了:
// 正确的普通函数写法:显式返回判断结果 if (!filters.some(function(e) { return e.label === filter_object.label; })) { // Do something }
两种写法的逻辑完全一致,只是普通函数需要明确告诉代码要返回什么结果~
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

