Câu trả lời:
Trong ES6, import
s 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 a
dù bạn khai báo như thế nào a
trong 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:
import
cá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.let
này so với const
ngữ 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, import
biến -ed thay đổi tương ứng.
export
chi 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.