Node-RED函数中为Date对象加毫秒偏移遇引用关联问题求助
Node-RED中Date对象赋值后同步修改的问题
问题说明
我在Node-RED的函数里需要给Date对象添加指定毫秒数,目前用setMilliseconds()方法实现(不确定是否有更高效的方式)。原本计划创建两个初始值完全一致的Date对象,给其中一个加上毫秒偏移后,计算二者的时间差(偏移量不固定,无法直接预设差值):
finish.setMilliseconds(finish.getMilliseconds() + 200);
但实际测试时出现了问题:修改其中一个对象后,另一个对象的值也跟着变了。
测试代码
let start = new Date(); let finish = start; msg.TS = start.toISOString(); finish.setMilliseconds(finish.getMilliseconds() + 200); msg.TS2 = finish.toISOString(); msg.TS3 = start.toISOString(); return msg;
调试输出
TS: "2023-09-27T14:51:36.522Z" TS2: "2023-09-27T14:51:36.722Z" TS3: "2023-09-27T14:51:36.722Z"
按预期TS3应该保留start的原始时间,结果却和修改后的finish时间一致。start和finish同步变化是因为赋值方式的问题吗?
可行解决方案
我找到了能正常运行的写法,但还没完全搞懂失败的原因(猜测是共享内存地址?):
let start = new Date(); let finish = new Date(start);
内容的提问来源于stack exchange,提问作者carlos
相关产品推荐
相关产品推荐

