2017-03-20 9 views
0

javascriptの配列の有効範囲は何ですか?javascript可変スコープの外部関数

どうすればこの問題を解決できますか?

var parseXlsx = require('excel'); 
var arrayURLToSearch = []; 
parseXlsx('foo.xlsx', function(err, data) { 
    if(err) throw err; 
    for(var i=1; i<2; i++){ 
     arrayURLToSearch[i] = data[i][0]; 
    } 
}); 
console.log(arrayURLToSearch[0]); -> undefined 

機能の外でarrayURLToSearchを印刷するにはどうすればよいですか?

+0

機能の外ではどういう意味ですか?あなたが習得したいあなたの正確なシナリオは何ですか?具体的なシナリオがない場合は、console.log(arrayURLToSearch [0]);を入力してください。 "for"ループ –

答えて

1

できません。コールバックは将来予測できない時点で発生します。代わりにこれを試してみてください:

var arrayURLToSearch = []; 
parseXlsx('foo.xlsx', function(err, data) { 
    if(err) throw err; 
    for(var i=1; i<2; i++){ 
     arrayURLToSearch[i] = data[i][0]; 
    } 

console.log(arrayURLToSearch[0]); 
}); 
0

あなたのメソッドは非同期なので、parseXlsxメソッドの前に行が実行されます。

1つの解決策は、callback機能を使用することです。

function execute(callback){ 
    var parseXlsx = require('excel'); 
    var arrayURLToSearch = []; 
    parseXlsx('foo.xlsx', function(err, data) { 
    if(err) throw err; 
    for(var i=1; i<2; i++){ 
     arrayURLToSearch[i] = data[i][0]; 
    } 
    callback(arrayURLToSearch); 
    }); 
} 
execute(function(arrayURLToSearch){ 
    console.log(arrayURLToSearch[0]); 
}); 
+0

@downvoterの後に理由を説明してください。 –

+2

rep-farmにごみの質問に答えないでください。 –

+0

おそらく 'parseXlsx'がコールバックされているので、あなたの文の2番目の部分です - コールバックです。 –

関連する問題