日期:2014-05-18  浏览次数:20451 次

已经声明长度的数组,长度还可以变 吗?
function fBuildCal(iYear, iMonth){
  var aMonth = new Array();
  for (var i = 1; i < 7; i++) {
  aMonth[i] = new Array(i);
  }
  var dCalDate = new Date(iYear, iMonth - 1, 1);
  var iDayOfFirst = dCalDate.getDay();
  var iDaysInMonth = new Date(iYear, iMonth, 0).getDate();
  var iOffsetLast = new Date(iYear, iMonth - 1, 0).getDate() - iDayOfFirst + 1;
  var iDate = 1;
  var iNext = 1;
  for (var d = 0; d < 7; d++) {
  aMonth[1][d] = (d < iDayOfFirst) ? (iOffsetLast + d) * (-1) : iDate++;
  }
  for (var w = 2; w < 7; w++) {
  for (var d = 0; d < 7; d++) {
  aMonth[w][d] = (iDate <= iDaysInMonth) ? iDate++ : (iNext++) * (-1);
  }
  }
  return aMonth;
}

这个.js里面第一个循环for里面aMonth是一个二维数组,aMonth[0]长度是1,aMonth[1]长度是2……以此类推。但是为什么后面的for里面能够给aMonth[1]赋7个长度的值呢?(aMonth[1][d] = (d < iDayOfFirst) ? (iOffsetLast + d) * (-1) : iDate++;)
已经声明长度的数组,长度还可以变 吗

------解决方案--------------------
JS数组的长度是可用变的
http://www.cnblogs.com/aleaf/archive/2009/10/23/1588446.html