The return exits the current function, but the iterations keeps on, so you get the "next" item that skips the if and alerts the 4...
If you need to stop the looping, you should just use a plain for loop like so:
$('button').click(function () {
var arr = [1, 2, 3, 4, 5];
for(var i = 0; i < arr.length; i++) {
var n = arr[i];
if (n == 3) {
break;
}
alert(n);
})
})
You can read more about js break & continue here: http://www.w3schools.com/js/js_break.asp