Skip to content

Instantly share code, notes, and snippets.

function secretPassword() {
var password = 'xh38sk';
return {
guessPassword: function(guess) {
if (guess === password) {
return true;
} else {
return false;
}
}
GlobalEnvironment = {
EnvironmentRecord: {
// встроенные идентификаторы
Array: '<func>',
Object: '<func>',
// и т.д.
// пользовательские идентификаторы
mysteriousCalculator: '<func>',
toFixedTwoPlaces: '<func>',
function mysteriousCalculator(a, b) {
var mysteriousVariable = 3;
return {
add: function() {
var result = a + b + mysteriousVariable;
return toFixedTwoPlaces(result);
},
subtract: function() {
var result = a - b - mysteriousVariable;
function iCantThinkOfAName(num, obj) {
// Это массив переменных, вместе с 2 параметрами, передаваемых
// "захваченными" в замкнутую функцию 'doSomething'
var array = [1, 2, 3];
function doSomething(i) {
num += i;
array.push(num);
console.log('num: ' + num);
console.log('array: ' + array);
console.log('obj.value: ' + obj.value);
var result = [];
for (let i = 0; i < 5; i++) {
result[i] = function () {
console.log(i);
};
}
result[0](); // 0, ожидалось 0
result[1](); // 1, ожидалось 1
var result = [];
for (var i = 0; i < 5; i++) {
result[i] = (function inner(x) {
// дополнительный вызываемый контекст
return function() {
console.log(x);
}
})(i);
}
environment: {
EnvironmentRecord: {
result: [...],
i: 5
},
outer: null,
}
var result = [];
for (var i = 0; i < 5; i++) {
result[i] = function () {
console.log(i);
};
}
result[0](); // 5, ожидалось 0
result[1](); // 5, ожидалось 1
GlobalEnvironment = {
EnvironmentRecord: {
// встроенные идентификаторы
Array: '<func>',
Object: '<func>',
// и т.д.
// пользовательские идентификаторы
x: 10
},
var x = 10;
function foo() {
var y = 20; // свободная переменная
function bar() {
var z = 15; // свободная переменная
return x + y + z;
}
return bar;
}