2017-04-18 53 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)();