Сначала вы предполагаете, что желаемый результат равен 8
, тогда 12
неверен. Первый console.log
, который будет выполнен, это тот, который имеет ergebnis = x + y
, поэтому вы должны увидеть 12
, затем 8
.
Далее, let
была введена в ES6, поэтому, если вы ограничиваете себя ES5, вы можете использовать только var
.
Наконец, убедитесь, что вы обернули всю область действия каждой переменной в IIFE. У вас есть return ergebnis
вне первой функции, так что переменная больше не будет находиться в области видимости во время выполнения строки кода.
Правильная реализация будет выглядеть примерно так:
var rechneScope = function(x, y, operation) {
return (function() {
var ergebnis = x - y;
if (!operation) {
(function() {
var ergebnis = x + y;
console.log(ergebnis);
})()
}
return ergebnis;
})()
}
console.log(rechneScope(10, 2))
Я знаю, что это не часть вашего задания, а просто для справки, Babel не заботится о попытках эмулировать область ES6. Вот как Бабель может скомпилировать то же самое:
"use strict";
var rechne = function rechne(x, y, operation) {
var ergebnis = x - y;
if (!operation) {
var _ergebnis = x + y;
console.log(_ergebnis);
}
return ergebnis;
};