jqueryのeachは個人的に使いにくい

jqueryのeachのreturnが使いにくかった話。

具体的にはeachの中でreturnすると制御が関数に移るのではなくただのbreakになってしまう。
例えば以下のようなコード
:HTML

1
2
3
4
5
<input type="text">
<input type="text">
<input type="text">
<input type="text">
<button>go</button>

:JS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$(function(){
var fuga = function(){
$('input').each(function(){
if(!$(this).val().match(/\S/g)){
console.log("foo");
return false;
console.log('bar');
}
//return false;
console.log('poo');
})
console.log('puu')
return true;
}

$('button').on('click', function(){
console.log(fuga());
})
})

このコードでinput値に空白があった場合にfuga()の戻り値をfalseにしたかったが、現実ではeachの中でreturnするとbreak文となってしまい、このコードでは常にtrueが返る。この問題を解決するために、書き直したコードが下にある。

:JS

1
2
3
4
5
6
7
8
9
10
11
var fuga = function(){
var elem = document.getElementsByTagName('input');
for(var i=0, num=elem.length;i<num;i++){
if(!elem[i].value.match(/\S/g)){
console.log('foo')
return false;
}
console.log('bar')
}
return true;
}