javascript - 为什么不相关的变量会影响另一个变量?时刻.js
问题描述
我有这个代码。start
是 30m 之前end
。当我再减去 5m 时,它end
也会影响:
let start = moment().subtract(30,"m");
let end = moment();
console.log(start); // 11:00
console.log(end); // 11:30
start = end.subtract(35,"m");
console.log(start); // 10:55
console.log(end); // 10:55
我理解为什么会发生这种情况——因为subtract()方法改变了它被调用的变量。所以我使用了另一个变量new_time
来尝试阻止end
受到影响:
let start = moment().subtract(30,"m");
let end = moment();
console.log(start); // 11:00
console.log(end); // 11:30
let new_time = end;
start = new_time.subtract(35,"m");
console.log(start); // 10:55
console.log(end); // 10:55
但是end
还是受到影响!为什么?!我怎样才能让我的代码工作......
此处的示例代码笔https://codepen.io/anon/pen/BvXGEW
编辑:我刚刚读到了moment cloning,我可以用它来解决我的问题,但我仍然不明白分配一个完全不同的变量如何影响原始变量......
解决方案
线
let new_time = end;
end
将object的引用复制到new_time
. 因此,两个变量都指向同一个对象。只有一个对象和两个变量引用它。
解决方案:
let new_time = moment(end);
它创建另一个时刻对象并将其分配给new_time
变量。现在你有 2 个不同的对象。
推荐阅读
- javascript - 如何使用 Ajax 显示 API 数据?
- ios - SwiftUI:如何增加可以触发按钮的区域?
- python - 4 个类,1 个执行操作并请求输入,其他类跟踪值
- javascript - chrome.devtools.network.onRequestFinished 中的 chrome.runtime.sendMessage
- java - 这个 java while 循环在合并排序中做了什么?
- unreal-engine4 - 我在哪里可以阅读有关程序生成关卡的更多信息?
- scala - 在火花 UDF 中获取空指针异常
- android - 定义 NavigationDrawer 行为
- c++ - 在 Qt 中执行图像显示的最佳方法
- python - 在 Pyspark 中按顺序应用多个正则表达式进行文本清理的最快方法