如果删除namePosition,为什么警报不起作用?执行时是否逐行(从上到下)读取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)();

最佳答案

您的函数按原样运行,但是,无需声明/命名将要返回的函数。只需返回该函数。这大大简化了代码。另外,您也没有使用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)();

09-25 17:30