Вы присваиваете переменные через функцию обратного вызова, которая зарегистрирована в обработчике событий. Это означает, что при запуске:
$('#var2').html(readOut2);
readOut2
имеет значение undefined , поскольку оно еще не было установлено функцией-обработчиком mousemove . Этот обработчик не будет запускаться до тех пор, пока текущий код в очереди не перестанет выполняться, а пользователь не будет двигать мышью Вы можете определить функцию в той же области видимости, что и переменные, и вызвать эту функцию из обработчика mousemove .
Re: ваши комментарии к другому ответу, вы можете использовать таймер:
jQuery(document).ready(function() {
var readOut1;
var readOut2;
$(document).mousemove(function(e) {
readOut1 = e.pageX;
readOut2 = e.pageY;
$('#var1').html(readOut1);
});
window.setInterval(function () {
$('#var2').html(readOut2);
}, 300);
});