Найти в Дзене
Игорь Пшеничный

Заметки JavaScript

Если внутри функции выполняется присваивание без оператора присваивания, браузер начинает искать a ,не находит ее в функции,выходит из нее,не на ходит ее там , и создает глобальную переменную вне функции,перезатерая существующую глобальную переменную если она присутствует.
(function () {
a = 5
})
Оглавление

Если внутри функции выполняется присваивание без оператора присваивания, браузер начинает искать a ,не находит ее в функции,выходит из нее,не на ходит ее там , и создает глобальную переменную вне функции,перезатерая существующую глобальную переменную если она присутствует.

  • (function () {
  • a = 5
  • })
  • К примеру объявленная ранее переменная (var a = 20) после вызова функции станет a = 5.

Еще одна задачка :

function (a,b) {

return function () {

return(5)

}

var result = sum(2,4);

console.log(result);

Что вернет sum(2,4)?Он вернет код функции,что бы активировать вызов второй функции нужно поставить еще одни ().То есть в result сейчас находиться функция function () {return(5)},написав еще одни(),мы вернем 5 и зацепимся за нее переменной result.

Еще пример:

function (a) {

return function (b) {

return a + b

}

var otherFunction = sum(2); // a вернет нам otherFunction (2 будет сидеть в Lexical Environment до момента вызова второй функции

var result = otherFunction(3);

console.log(result); // = 5

У каждого Lexical Environment есть ссылка на его внешний родитель(называется scope).

Приватная область видимости (счетчик)

var result = (function () {

var a = 10;

return {

sayA: function () {

console.log(a)

a++;

}

}

})()

result.sayA();

И
И