Задать вопрос
@ahel73
js, html, css, php, sql, mySql

Замыкания в javascript, почему не работает?

почему в ниже лежащей функции конечное значение переменной равно первоначальному? Хотя во внутренней функции данной переменной присвоено другое значение посредством замыкания? Как сделать, что бы сохранялось новое значение?
function s() {
  var a = 1;
  function d(c) {
    console.log(c);
    c = 2;
    console.log(c);
  }
  d(a)
  console.log(a)
}
s()
// вывод в консоль:
// 1
// 2
// 1
  • Вопрос задан
  • 227 просмотров
Подписаться 1 Оценить 7 комментариев
Пригласить эксперта
Ответы на вопрос 2
Xuxicheta
@Xuxicheta
инженер
1. Замыкание тут не причем.
2. Ты передаешь примитив. Он передается по значению. Если передать объект, он передастся по ссылке и изменится
y={n:2};
(function(o) {o.n=5}) (y);
console.log(y); // y == { n:5}
Ответ написан
Комментировать
Krasnodar_etc
@Krasnodar_etc
fundraiseup
Рабочий вариант -
var a = 1;
	function d(c){
		console.log(c);
		return c = 2;		
	}
a = d(a);

console.log(a);


Ответ на вопрос: Потому что вы вызываете функцию с параметром, равным a. Это не влияет на значение самой переменной
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы