Ответы пользователя по тегу JavaScript
  • Javascript событие закрытия окна браузера? Как обработать?

    @HowardRoark
    Full stack developer
    Определить, закрылась ли вкладка или это был переход по ссылке невозможно
    Только вручную:
    var inFormOrLink;
    $('a').on('click', function() { inFormOrLink = true; });
    $('form').on('submit', function() { inFormOrLink = true; });
    
    $(window).on("beforeunload", function() { 
        return inFormOrLink ? "Do you really want to close?" : null; 
    })
    Ответ написан
  • Что такое замыкание?

    @HowardRoark
    Full stack developer
    Мне кажется, самый простой пример замыкания - это счетчик.
    var counter = (function () {
    	var current = 0;
    	return function () {
    		current++;
    		return current;
    	}
    })();
    
    console.log(counter()); // 1
    console.log(counter()); // 2

    В данном случае мы не имеем доступ к переменной current и функция гарантированно возвращает каждый раз уникальное значение.
    Если бы это была простая функция, то переменная, содержащая состояние (current), должна была бы находиться вне функции.
    var current = 0;
    var counter = function () {
    	current++;
    	return current;
    }
    
    console.log(counter()); // 1
    current = 5;
    console.log(counter()); // 6

    А это уже нарушает принцип "черного ящика", т.к. переменной можно присвоить другое значение в любом месте.
    Ответ написан
    4 комментария