Câu trả lời:
Trong ES6, imports là các chế độ xem chỉ đọc trực tiếp trên các giá trị được xuất. Kết quả là, khi bạn làm import a from "somemodule";, bạn không thể gán cho adù bạn khai báo như thế nào atrong mô-đun.
Tuy nhiên, vì các biến được nhập là chế độ xem trực tiếp , nên chúng thay đổi theo biến xuất "thô" trong xuất khẩu. Hãy xem xét mã sau đây (mượn từ bài viết tham khảo bên dưới):
//------ lib.js ------
export let counter = 3;
export function incCounter() {
counter++;
}
//------ main1.js ------
import { counter, incCounter } from './lib';
// The imported value `counter` is live
console.log(counter); // 3
incCounter();
console.log(counter); // 4
// The imported value can’t be changed
counter++; // TypeError
Như bạn có thể thấy, sự khác biệt thực sự nằm ở lib.js, không phải main1.js.
Để tóm tắt:
importcác biến cho -ed, bất kể bạn khai báo các biến tương ứng trong mô-đun như thế nào.letnày so với constngữ nghĩa áp dụng cho các biến được khai báo trong module.
const, nó không thể được gán lại hoặc bật lại ở bất cứ đâu.let, nó chỉ có thể được gán lại trong mô-đun (chứ không phải người dùng). Nếu nó được thay đổi, importbiến -ed thay đổi tương ứng.
exportchi tiết từ khóa ở đây . Hiện tại nó không được hỗ trợ bởi bất kỳ trình duyệt web nào.