foreach 循环

详谈js中标准for循环与foreach(for in)的区别
转载 &发布时间:日 09:54:00 & 投稿:jingxian
下面小编就为大家带来一篇详谈js中标准for循环与foreach(for in)的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
js中遍历数组的有两种方式
var array=['a']
//标准的for循环
for(var i=1;i&array.i++){
alert(array[i])
//foreach循环
for(var i in array){
alert(array[i])
正常情况下上面两种遍历数组的方式结果一样。首先说两者的第一个区别
标准的for循环中的i是number类型,表示的是数组的下标,但是foreach循环中的i表示的是数组的key是string类型,因为js中一切皆为对象。自己试试 alert(typeof i);这个区别是小问题。现在我加上如下代码,上面的执行结果就不一样了。
//扩展了js原生的Array
Array.prototype.test=function()
试试看上面的代码执行什么。我们发现标准的for循环任然真正的对数组循环, 但是此时foreach循环对我刚才写的test方法写打印出来了。这就是for与foreach遍历数组的最大区别,如果我们在项目采用的是用foreach遍历数组,假设有一天谁不小心自己为了扩展js原生的Array类,或者引入一个外部的js框架也扩展了原生Array。那问题就来了。再此建议两点
不要用for in遍历数组,全部统一采用标准的for循环变量数组( 我们无法保证我们引入的js是否会采用prototype扩展原生的Array )
如果要对js的原生类扩展的时候,不要采用prototype了
以上这篇详谈js中标准for循环与foreach(for in)的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Java中foreach循环的实现原理
Java中foreach循环的实现原理
import java.util.ArrayL
import java.util.I
import java.util.L
* Created By 谭健:本类用于解释Foreach循环的实现原理
* 新形式的遍历虽然好用,但是他丢掉了索引信息。当你需要访问数组或者集合的下标,你将不能使用foreach
从JDK的第五个版本开始加入了这个foreach功能,但是java语言对于它的实现做了隐藏,他是隐藏在语言内部的
* foreach循环的几个特性
1.foreach遍历不能对元素进行赋值操作
2.同时只能遍历一个
3.遍历的时候,只有当前被遍历的元素可见,其他不可见
4.只能正向遍历,不能反向
5.foreach对ArrayList的遍历是因为其实现了Iterable接口
public class ForeachTest {
private static int[] array = { 1, 2, 3 };
private static int[][] arrayTwo = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
private static List&String& list = new ArrayList&String&();
list.add("array - 1");
list.add("array - 2");
list.add("array - 3");
public static void main(String[] args) {
oldWrite();
newWrite();
foreachTwo();
forList();
iteratorList();
foreachList();
* 旧形式的遍历
private static void oldWrite() {
for (int i = 0; i & array. i++) {
System.out.println(array[i]);
* 新形式的遍历
private static void newWrite() {
for (int i : array) {
System.out.println(i);
* 新形式对于二维的遍历
private static void foreachTwo() {
for (int[] i : arrayTwo) {
for (int j : i) {
System.out.println(j);
* 旧方式遍历集合
private static void forList() {
for (int i = 0; i & list.size(); i++) {
System.out.println(list.get(i));
* 使用迭代器遍历集合
private static void iteratorList() {
for (Iterator&String& iterator = list.iterator(); iterator.hasNext();) {
System.out.println((String) iterator.next());
* 使用新形式遍历集合
private static void foreachList() {
for (String string : list) {
System.out.println(string);
没有更多推荐了,
不良信息举报
举报内容:
Java中foreach循环的实现原理
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!为什么我在forEach()循环里无法取到数组中对象的值? - 知乎4被浏览771分享邀请回答04 条评论分享收藏感谢收起1添加评论分享收藏感谢收起写回答没有更多推荐了,
不良信息举报
举报内容:
for循环和foreach循环的区别?
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 vm循环输出list 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信