Tôi đang chơi xung quanh với một số logic vô nghĩa để hiểu rõ hơn ES6 và đã nhận thấy một sự xuất hiện kỳ lạ khi xác định một hằng số.ES6 tại sao tôi có thể gán lại một hằng số khi được xác định trong một vòng lặp
Dường như có thể thay đổi một nhiệm vụ thường xuyên khi định nghĩa trong một vòng lặp:
"use strict";
for(const i=0;i<10;i++){ //seting constant in loop
console.log(i); //is reassigned and incremented 0,1,2,3...
}
const e = 0; //setting constant outside loop
for(;e<10;e++){ //cannot reassign constant
console.log(e);
}
là hành vi mong đợi này và ai cũng có thể làm sáng tỏ về lý do tại sao điều này xảy ra, là lời tuyên bố trong vòng lặp khác nhau?
Update từ Statements/const
This declaration creates a constant that can be global or local to the function in which it is declared. Constants are block-scoped.
Chà, chỉ cần thử trên phiên bản Chrome 40.0.2214.94 và nó tạo ra một vòng lặp vô hạn, có thể vì hằng số không bao giờ bị tắt tiếng. Trình duyệt mà bạn đang sử dụng? – Sarcadass
Điều đó có nghĩa là có nghĩa là Chrome đã sửa nó bằng cách không gán lại nó (? Nhưng có lẽ nên ném một lỗi) và vẫn giữ nguyên hằng số. Trong trường hợp của bạn, có vẻ như 'const' hoạt động như' let' https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#let_in_loops –
Trong Firefox, tôi nhận được 'TypeError: redeclaration của var i' cho ví dụ đầu tiên – Kapep