我遇到了一个JS范围函数的问题,我正在为codewars kata编写一个函数。每当我只有两个参数而不是3时,我的开始被输入为0而不是1.我发现这是因为我的arguments.lenth == 1 if语句,但是根本不适用!这是我的范围声明:Javascript函数参数输入为0而不是1
function range(start, end, step) {
if(arguments.length<3) {
if(arguments.length==2) step=1;
if(arguments.length==1) end=start; start=0; step=1;
}
if(end < start) return [];
arr = [];
while(start < end) {
arr.push(start);
start+=step;
}
return arr;;
}
当我试着输入:
range(1,11);
我的范围的开始变为0,最终变成11,但是当我输入:
range(1, 11, 1);
你们能请你指点我正确的方向吗?对于我的生活,我无法弄清楚它! 谢谢!
这也是一个很好的例子,为什么用'if'语句总是使用大括号是一种更安全的编码方式,因为它可以防止这样的意外错误。 – jfriend00 2014-09-06 04:58:39