Javascript 为什么startDate会随着当前日期而增加?

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)

我不明白为什么在下面的脚本中,startDate会随着currentDate而改变,但是name1保持不变

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);