Мои задачи по Javascript
Случайная задача
Список всех задач

Задача 52

Файл main.js:
import {x, changeX} from "./module.js";

console.log(x); // ??
changeX();
console.log(x); // ??

Файл module.js:
let x = 5;

function changeX() {
	x = 10;
}

export {x, changeX}

Что выведет консоль?
1
2
3
4
← Задача 51Задача 53 →
Пояснение Это очень любопытное поведение в Javascript!
Примитивы импортируются как константы, значения этих переменных после импорта нельзя поменять в "принимающем" файле, возникнет ошибка "TypeError: Assignment to constant variable".
Однако функция из модуля может поменять значение let-переменной из своей области видимости. И после этого значение переменной-константы изменится в принимающем файле. Получается, что примитив импортируется по ссылке! Разумеется, если после импорта скопировать из импортированной константы значение в новую переменную, то это значение сохранится неизменным в новой переменной.



Написать сообщение - отзыв, пожелание и т.п.