我遇到了一個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