2017-04-18 55 views
0

如果我擦除namePosition,爲什麼警告不起作用? Javascript執行時是否一行一行地讀取(從上到下)?如果是,那麼警報應該工作,因爲它在返回之前先被執行/讀取。Javascript理解返回

function positionIdentifier(name, nameArray) { 
    var namePosition; 
    for (i = 0; i < nameArray.length; i++) { 
    if (nameArray[i] == name) { 
     namePosition = function() { 
     alert("Your name is in position number " + (i + 1)); 
     } 
     return namePosition; 
    } 

    } 

} 

name1Array = ["look", "sky", "walk", "kier"]; 
positionIdentifier("walk", name1Array)(); 
+0

你分配namePosition的功能。你必須實際調用該函數來執行代碼。如果你退回它,你可以打電話給它。 – Cruiser

+3

你所做的只是聲明一個函數。它需要被執行。 –

回答

2

您的函數按原樣運行,但是不需要聲明/命名將要返回的函數。只需返回該功能。這相當簡化了代碼。此外,你沒有聲明你的循環變量或你的數組變量var,這將導致他們成爲全球。請記住聲明所有變量。

function positionIdentifier(name,nameArray){ 
 
     
 
    for(var i = 0; i < nameArray.length; i++){ 
 
     if(nameArray[i] == name){ 
 
      return function(){ 
 
      alert("Your name is in position number "+(i+1)); 
 
      } 
 
     } 
 
    } 
 
} 
 

 
var name1Array = ["look","sky","walk","kier"]; 
 
positionIdentifier("walk", name1Array)();