break只能用于循环与switch语句中,不能用在其他方面。本人曾经在undersocre 中的_.each中用break语句,发现不起作用。这是一个类似于封装jquery中each 的一个小案例--查找数组中某个值第一次出现的下标。如下为错误代码
<script> var array=[1,29,3,45,23,5,9]; var index=-1; function each(arr, fn){ for(var i=0;i<arr.length;i++){ fn(i); } }; each(array,function f(i){ if(array[i]==23){ index=i; break;//此处在编辑器中会自动报错。 } }); console.log(index); </script> 如下代码为经过修改后的代码, <script> var array=[1,29,3,45,23,5,9]; var index=-1; function each(arr, fn) for(var i=0;i<arr.length;i++){ var result= fn(i); if(result===false){ break; } } each(array,function f(i){ if(array[i]==23){ index=i; return false; } }); console.log(index); </script>
如下代码为按照上下文进一步改造过后的代码。
<script> var array=[1,29,3,45,23,5,9]; var index=-1; function each(arr, fn){ for(var i=0;i<arr.length;i++){ var result= fn.apply(arr[i],[arr[i],i]); if(result===false){ break; } } }; each(array,function f(i,v){ if(this.valueOf()==23){ index=v; return false; } }); console.log(index); </script>
