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

関連する問題