Debug - разные значение одной переменной в одном месте

Элементарная функция(ничего осмысленного не выполняет, просто использование операторов)

  function foo(a, b, c, d, h){
    d =9;
    if( a > 4 ){
      if( b > 0 ){
        for(b; b <= 5; b++){
          c *= c;
        }
      } else {
        b--;
      }
    } 
console.log(d);
    if( d = 10){
      c -= 2;console.log(d);
    } else{
      if( h = 10){
        c += 2;
      }
    }

    return c;   
  }

При выводе в консоль у меня в браузере вывод первой console.log 9, второй console.log 10
Выполняю тестирование с mocha.js
код теста

describe('foo', function() {
	it("Выполняет функцию", function() {
		assert.equal(foo(5, 0, 2, 0, 9), 2);
	});
});

Результат работы


Как возможно разные значения одной переменной в этой ситуации? Это ведь не верно

Проблемы не вижу, потому что вне зависимости от того что показывают console.log-и, результат вызова foo(5, 0, 2, 0, 9) действительно равен 0. Опиши подробнее почему и какой результат ты ожидаешь.

оператор присвоения =, а не сравнения == ===

Кстати, далее в коде такая же ошибка

Неверный оператор сравнения, devSkripatch спасибо