我正在尝试测试一个指令但是当我模拟指令时,指令中间的一行会运行一个错误。这阻止了我的测试运行
$scope.getIterations = function (its) {
return new Array(its);
};
返回
RangeError: Invalid array length
因为参数其返回 NaN ,这是有道理的。
我想我可以打电话 var its = [1,2,3]; $ scope.getIterations(its)
在beforeEach中,但由于错误代码返回相同的内容而没有任何区别。
也许我误解了这段代码,但我不知道如何解决这个问题。
答案 0 :(得分:1)
它似乎与new
有关。如果您尝试实例化一个新数组,那么尝试使用Array Literal而不是构造函数实例化您的数组:
$scope.getIterations = function (its) {
return [its];
};
但正如其他人所指出的那样,它还不清楚你想要返回什么,所以如果它是一个数组。你可以return its;
。
答案 1 :(得分:1)
异常非常自我解释:您在new Array()
expects variadic arguments as items to insert or a length to pad时传递Array
:
$scope.getIterations = function(its) {
return new Array(its.length);
};
目前还不清楚你在这里尝试做什么......好像你只是想按原样返回论点:
$scope.getIterations = function(its) {
return its;
};
答案 2 :(得分:1)
数组构造采用逗号分隔的值,这些值将成为数组的元素,但有一个例外,如果它只有一个数字id,它将生成那么多长度的数组,其中未定义为元素。
new Array("a") // ["a"]
new Array("a","b")//["a","b"]
new Array(3,2) //[3,2]
new Array(3) //[undefined x 3]
在你的情况下,如果它的值是一个数组,你可以自己返回变量。
返回它;