Tôi bị nhầm lẫn sâu sắc bởi hành vi của JavaScript hoặc bảng điều khiển Chrome. Ai đó có thể giúp tôi hiểu không?Bảng điều khiển JavaScript in giá trị được gán của biến trước khi nó được gán?
Về cơ bản tôi đã mã JavaScript sau, không lồng vào bên trong bất kỳ chức năng hoặc phạm vi khác:
var initial_array = [];
function initialiseArray() {
initial_array = [2, 9, 8, 6, 0, 2, 1];
}
function copyToNewArray() {
var copied_array = [];
console.log("COPIED 1", copied_array);
for (var i = 0; i < initial_array.length; i++) {
var copy = initial_array[i];
copied_array.push(copy);
}
console.log("COPIED 2", copied_array);
}
initialiseArray();
copyToNewArray();
Tôi mong chờ COPIED 1
in []
- là biến chưa được gán chưa - nhưng thay vào đó nó in [2, 9, 8, 6, 0, 2, 1]
- tức là giá trị sau khi nó được gán.
Tại sao?
Ngẫu nhiên, nếu bạn thay thế dòng 8-11 bằng initial_array = copied_array
thì RESULTS 1
thực sự in là []
. Có liên quan gì đến việc sử dụng .push
không?
Thú vị. Điều này dường như giải quyết cùng một vấn đề? [link] (http://zef.me/2843/javascript-the-scope-pitfall) – j08691
câu hỏi tương tự: http://stackoverflow.com/questions/4057440/is-chromes-javascript-console-lazy-about- đánh giá-mảng – diEcho