我正在使用AngularJS进行一个Web项目,但在其中一个控件检查中,我正在尝试实现array.prototype.some() - 函数。不幸的是,它不起作用,总是给出错误。
在尝试查找错误时,我尝试实现一个简单的测试用例,其中检查带有数字的数组的值是否大于5。
测试代码是这样的:
var arrayForTesting = [2, 5, 18];
var result = arrayForTesting.some(function (element, index, array){
element > 5;
});
有些网页暗示我需要索引和数组作为必需参数,但只有元素才是我测试所需的唯一参数。
然而,结果仍然是假的,但至少有一个元素高于5。
我做错了什么?
答案 0 :(得分:8)
你不是返回 element > 5
比较的结果;也许你已经看过ES2015的“箭头函数”,并且他们的简洁语法与function
函数语法相混淆(或者你可能已经看过一些CoffeeScript)。
使用function
语法时,您必须返回结果:
var arrayForTesting = [2, 5, 18];
var result = arrayForTesting.some(function (element, index, array){
return element > 5;
// ^^^^^^
});
如果函数在没有return xyz
语句的情况下退出(或使用没有操作数的return;
),则调用该函数的结果为undefined
,这是假的,因此{{1} }不会停止循环。
使用ES2015,如果使用箭头功能和“简洁的函数体”,则返回是隐含的:
some
但只有简洁的机构(没有var arrayForTesting = [2, 5, 18];
var result = arrayForTesting.some(element => element > 5);
),否则您使用{}
与return
函数一样:
function
请注意,虽然尖端浏览器正在积极更新其JavaScript引擎以添加ES2015功能,但实际支持仍然很少,您可能需要转换为使用箭头功能等ES2015功能。 (尤其是如果您需要支持IE10等旧版浏览器。)