如果删除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)();