Bạn có thể đơn giản giải thích dữ liệu được lấy từ GetTicker và GetRecords dựa trên thời điểm nào khi kiểm tra lại không?
Ví dụ, bạn gặp một câu hỏi rất kỳ lạ, đoạn mã sau đây:
function main (() {
while (true) {
var records = exchange.GetRecords ();
records.pop (();
Log ((records.length);
Sleep ((60000);
Tuy nhiên, nếu bỏ pop ((() thì: function main (() { while (true) { var records = exchange.GetRecords (); /records.pop (); Log ((records.length); Sleep ((60000); ♪ ♪ Cuối cùng, đầu ra là bình thường:
Nếu không có vòng lặp while, thì giữ pop ((() không có vấn đề:
function main (() {
var records = exchange.GetRecords ();
records.pop (();
Log ((records.length);
Sleep ((60000);
Bạn có thể trả lời không?
KhôngGetRecords trả về một mảng mà thực sự là cùng một biến được bảo trì ở cấp thấp, vì vậy không thể thay đổi trực tiếp.
Guigui17fCó thể là do các tính năng của ngôn ngữ js? Tôi đã sao chép một lần với slice))) và không hiểu tại sao...
Những nhà phát minh định lượng - những giấc mơ nhỏBạn có thể thử sử dụng chức năng Deep Copy này, mỗi lần bạn lấy records, bạn sẽ có thể copy lại và thay đổi bất cứ biến nào bạn muốn. `` var cloneObj = function ((obj) { // Phân bản sâu các hàm đối tượng var str, newobj = obj.constructor === Array? [] : {}; if (typeof obj!== 'object') { return; } else if (JSON) { str = JSON.stringify ((obj); // đối tượng nối chuỗi newobj = JSON.parse ((str); // chuyển đổi } else { for (var i in obj) { newobj[i] = typeof obj[i] === 'object'? cloneObj ((obj[i]) : obj[i]; ♪ ♪ return newobj; }; ``
Những nhà phát minh định lượng - những giấc mơ nhỏslice ((() Đây là một bản sao hoàn toàn, không phải là một tham chiếu. Các hoạt động tham chiếu thực sự là cùng một biến, thay đổi lần tiếp theo sẽ có ảnh hưởng.
Guigui17fĐiều này đã xảy ra. Chúng tôi khuyên bạn nên giải thích trong tài liệu API để ngăn chặn sai sót.