for ,foreach ,map 循環的區別

1、for循環javascript

一、for - 循環代碼塊必定的次數java

 遍歷數組最經常使用到的for循環,是最爲熟知的一種方法數組

for (var i=0; i<5; i++)
  {
  x=x + "The number is " + i + "<br>";
  }

從上面的例子中,能夠看到:dom

Statement 1 在循環開始以前設置變量 (var i=0)。函數

Statement 2 定義循環運行的條件(i 必須小於 5)。測試

Statement 3 在每次代碼塊已被執行後增長一個值 (i++)。優化

 

二、for/in - 循環遍歷對象的屬性ui

var person={fname:"John",lname:"Doe",age:25};

for (x  person)
  {
  txt=txt + person[x];
  }

in

三、while - 當指定的條件爲 true 時循環指定的代碼塊this

若是忘記增長條件中所用變量的值,該循環永遠不會結束spa

while (i<5)
  {
  x=x + "The number is " + i + "<br>";
  i++;
  }

四、do/while - 一樣當指定的條件爲 true 時循環指定的代碼塊

do/while 循環是 while 循環的變體。該循環會執行一次代碼塊,在檢查條件是否爲真以前,而後若是條件爲真的話,就會重複這個循環。循環至少會執行一次,即便條件是 false,隱藏代碼塊會在條件被測試前執行

do
  {
  x=x + "The number is " + i + "<br>";
  i++;
  }
while (i<5);

2、foreach 用於調用數組的每一個元素,並將元素傳遞給回調函數。注意: forEach() 對於空數組是不會執行回調函數的。

array.forEach(function(currentValue, index, arr), thisValue)
currentValue:必需。當前元素
index:可選。當前元素的索引值。
arr:可選。當前元素所屬的數組對象。
thisValue:可選。傳遞給函數的值通常用 "this" 值。
若是這個參數爲空, "undefined" 會傳遞給 "this" 值

#for  和  foreach 的總結

3、map

.map(callback(index,domElement))

.map()要比.forEach()執行速度更快。雖然我也說過執行速度不是咱們須要考慮的主要因素,可是他們都比for()要更好用,那確定要選更優化的一個,可是map()方法不會對空數組進行檢測。

第二,.forEach()的返回值並非array

var arr = [1, 2, 3]; console.log( arr.map(function(i){ return i+i; }) //鏈式風格 .sort() );// [2,4,6] console.log( arr.forEach(function(i){ return i+i; }) //接不起來,斷了 .sort() );//TypeError: Cannot read property 'sort' of undefined
  • map:和forEach很是類似,都是用來遍歷數組中的每一項值的,用來遍歷數組中的每一項;
  • 區別:map的回調函數中支持return返回值;return的是啥,至關於把數組中的這一項變爲啥(並不影響原來的數組,只是至關於把原數組克隆一份,把克隆的這一份的數組中的對應項改變了);
  • 無論是forEach仍是map 都支持第二個參數值,第二個參數的意思是把匿名回調函數中的this進行修改。

#map 和 foreach的總結

一、map速度比foreach快

二、map會返回一個新數組,不對原數組產生影響,foreach不會產生新數組,

三、map由於返回數組因此能夠鏈式操做,foreach不能

相關文章
相關標籤/搜索