Как и другие, «this» отличается в тесте, и анонимная функция передается в click ().
test является глобальной функцией, поэтому «this» является ссылкой на оконный (глобальный) объект. На самом деле вы устанавливаете глобальную переменную, вероятно, не предполагаемый побочный эффект. (используйте alert (window.rating), чтобы понять, что я имею в виду)
Для вашего примера нет необходимости использовать «это», хотя я думаю, что ваш пример просто для демонстрации сути. Если бы это был настоящий код, tt должен быть преобразован в:
function test () {
var rating = 0;
$j('#star_rating a').click(function() {
alert(rating); //Use the closure defined in the outer function
});
}
Дело в том, что вы не должны использовать «this» из глобальных функций.