Javascript 无法访问函数外部的数组元素

Javascript 无法访问函数外部的数组元素,javascript,arrays,node.js,hash,Javascript,Arrays,Node.js,Hash,我试图将名称与特定目录中所有文件的路径一起散列。散列之后,我将散列保存到数组中(hash_orig)。这就是我所做的 var fs = require('fs'); var Hashes = require('jshashes'); var path = process.argv[2]; var path_elements = new Array(); var hash_orig = new Array(); fs.readdir(path, function(err, items) { c

我试图将名称与特定目录中所有文件的路径一起散列。散列之后,我将散列保存到数组中(hash_orig)。这就是我所做的

var fs = require('fs');
var Hashes = require('jshashes');
var path = process.argv[2];
var path_elements = new Array();
var hash_orig = new Array();


fs.readdir(path, function(err, items) {
console.log('\nNumber of files in the directory: '+items.length);
console.log('Hashing algorithm: SHA1')
    for (var i=0; i<items.length; i++) {
        path_elements.push(path+"/"+items[i])
        var SHA1 = new Hashes.SHA1().b64(path_elements[i])
        console.log([i+1]+':\t'+items[i]+"\t" + SHA1)
        hash_orig.push(SHA1);
    }
});

    console.log(hash_orig)
var fs=require('fs');
var Hashes=require('jshashes');
var path=process.argv[2];
var path_elements=新数组();
var hash_orig=新数组();
fs.readdir(路径、函数(错误、项){
console.log('\n目录中的文件数:'+items.length);
log('哈希算法:SHA1')

for(var i=0;i
fs.readdir
是一个异步函数。当到达
console.log(hash\u orig)
时,尚未调用
readdir
的回调。
将log语句放在回调的末尾,您将看到结果。

是的,您只是缺少了
fs.readdir
函数是一个异步回调

因此,当您从外部调用
console.log(hash\u orig)
时,实际上回调尚未完成

使用超时,您的数组将被填充:

setTimeout(function(){
  console.log(hash_orig);
},500);