Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замыкание. jquery&native js (https://javascript.ru/forum/misc/36446-zamykanie-jquery-native-js.html)

Blizzart 15.03.2013 11:23

Замыкание. jquery&native js
 
Интересно знать, почему функции работают по разному? и в первом случае переменную можно таким образом получить во внешнюю функцию, а во втором область видимости действует по правилам замыкания.
function clk(){
    width = 0
	$(this).children('a').each(function(){
		width += $(this).width();
	});
	console.log(width);//число 216
};
$('.main-menu').click(clk);


function siblings(){
	width1 = 0
	function sibCount(){
		width1 = 11;
	}
	console.log(width1); //число 0
}
siblings();

jsgeek 15.03.2013 11:31

Потому что не вызвана функция sibCount(). Ты её определил, но видимо забыл вызвать :)

Blizzart 15.03.2013 12:03

Да, я специально не поставил sibCount()
Значит, jQuery методы сами вызывают все функции, которые внутри них...

jsgeek 15.03.2013 12:23

Метод each вызывает функцию переданную ему для каждого элемента массива или объекта jquery. В данном случае $(this).children('a') - итерируемый объект.


Часовой пояс GMT +3, время: 09:52.