Javascript 为什么startDate会随着当前日期而增加?
我不明白为什么在下面的脚本中,startDate会随着currentDate而改变,但是name1保持不变Javascript 为什么startDate会随着当前日期而增加?,javascript,Javascript,我不明白为什么在下面的脚本中,startDate会随着currentDate而改变,但是name1保持不变 getWorkdays('01/03/2017', '05/03/2017', 'Jimmy'); function getWorkdays (startDate, endDate, name1) { var startDate = nlapiStringToDate(startDate); var endDate = nlapiStringToDate(endDate)
getWorkdays('01/03/2017', '05/03/2017', 'Jimmy');
function getWorkdays (startDate, endDate, name1) {
var startDate = nlapiStringToDate(startDate);
var endDate = nlapiStringToDate(endDate);
var name1 = name1;
nlapiLogExecution('DEBUG', 'Conversion of String to Date', 'startDate is now ' + startDate + ' and endDate ' + endDate + ' and the name is ' + name1);
var name2 = name1;
var currentDate = startDate;
nlapiLogExecution('DEBUG', '', 'The currentDate is'+ currentDate + ' and the startDate is ' + startDate);
while (currentDate <= endDate) { // Loop through all dates between startDate and endDate
var weekday = currentDate.getDay(); // Retrieve the weekday (in numeric format with sunday = 0) from the currentDate
if (weekday == 1 || weekday == 6){ // Perform the following loop only if weekday is a Saturday or Sunday
nlapiLogExecution('DEBUG', '', 'The weekday number is ' + weekday + ' and the name is ' + name2);
}
var name2 = 'Jose';
currentDate.setDate(currentDate.getDate() + 1); // Go to the next date
nlapiLogExecution('DEBUG', '', 'name2 is '+ name2 + ' and name1 ' + name1);
nlapiLogExecution('DEBUG', '', 'The currentDate is'+ currentDate + ' and the startDate is ' + startDate);
}
}
getWorkdays(“2017年3月1日”、“2017年3月5日”、“吉米”);
函数getWorkdays(开始日期、结束日期、名称1){
var startDate=nlapiStringToDate(startDate);
var endDate=nlapiStringToDate(endDate);
变量name1=name1;
nlapiLogExecution('DEBUG','String到Date的转换','startDate现在是'+startDate+'和endDate'+endDate+',名称是'+name1');
变量name2=name1;
var currentDate=起始日期;
nlapiLogExecution('DEBUG','currentDate为'+currentDate+',startDate为'+startDate');
而(当前日期之后
currentDate
和startDate
变量都指向相同的Date
对象,因此对一个变量所做的更改也会影响另一个变量(两者都“查看”相同的对象)
之后
name2
变量指向一个新字符串,但这不会改变name1
指向的内容。要达到与上述相同的效果,您必须更改原始字符串(这在JavaScript中是不可能的,因为字符串是不可变的)
如何将起始日期保持在2017年3月1日
您需要创建一个新的Date
对象,并使用该对象初始化currentDate
var currentDate = nlapiStringToDate(startDate);
或者基于startDate
创建一个新的日期对象,并将其分配到currentDate
,如果他删除该行,他的代码将中断。Date方法如何。clone()?是否也可以使用该方法?
var name2 = 'Jose';
var currentDate = nlapiStringToDate(startDate);