Javascript非常奇怪的代码问题

时间:2014-11-30 01:37:04

标签: javascript node.js object

最近我调试了一个在node.js下运行的Javascript代码,发现了一个非常奇怪的问题,如下所示:

var temp;

Rpc.test = function test(txs) {

    var i;

    for(i=0;i<txs.length;i++)
    {
        this.getTxInfo(txs[i], true, function(err, info) 
        {
            temp = JSON.parse(JSON.stringify(info)); 

        });

	    for(var name in temp) 
        {
	        console.log("key name: ",name);
            var value = temp[name];
            console.log("key value: ",value);
	    }
    }
}

在上面的代码段中,它可以列出控制台消息,如下所示:

密钥名称:txid 键值:3737f96320d7fe291ce736ed0229cef5349ad3f7db616739bff7665d2883ff0b 密钥名称:版本 关键值:1 密钥名称:锁定时间 键值:0 关键名称:vin 关键值:[{txid:'bd6ddea06fa9bff16c0e97a928c50cf5e93a0de247cd1c4aec0162268a47649a',     vout:0,     scriptSig:      {ASM: '3045022100b01afbe9005842ddfb7802dac46bc734d7dca7c331f6ff06a71510f771e888e7022059e544718fae31aca683d37a4d94d9384e0d14d2bad08f6a7bb7f0268e6b931701 02ce38cabef6be9982b40c7de5ae379e36fd81bb492bfd1cea708e062e84db031f',        十六进制: '483045022100b01afbe9005842ddfb7802dac46bc734d7dca7c331f6ff06a71510f771e888e7022059e544718fae31aca683d37a4d94d9384e0d14d2bad08f6a7bb7f0268e6b9317012102ce38cabef6be9982b40c7de5ae379e36fd81bb492bfd1cea708e062e84db031f'},     顺序:4294967295}] 关键名称:vout 关键值:[{值:1549.51230834,     n:0,     scriptPubKey:      {asm:'OP_DUP OP_HASH160 8d433137adae8eb831665d3385933465112380b8 OP_EQUALVERIFY OP_CHECKSIG',        hex:'76a9148d433137adae8eb831665d3385933465112380b888ac',        reqSigs:1,        类型:'pubkeyhash',        地址:[对象]}},   {值:1382.57152961,     n:1,     scriptPubKey:      {asm:'OP_DUP OP_HASH160 a41f514c48b588ded3e51d99de804235f97a0bb9 OP_EQUALVERIFY OP_CHECKSIG',        hex:'76a914a41f514c48b588ded3e51d99de804235f97a0bb988ac',        reqSigs:1,        类型:'pubkeyhash',        地址:[对象]}}] 键名:blockhash 键值:0f7bb8177d1c7c66927072c33208adf7ca076f2de91048a7e362bdb4cf5ab996 关键名称:确认 关键值:22412 关键名称:时间 关键值:1391079606 键名:blocktime 关键值:1391079606

但是当我修改了一些代码如下:

var temp;

Rpc.test = function test(txs) {

    var i;

    for(i=0;i<txs.length;i++)
    {
        this.getTxInfo(txs[i], true, function(err, info) 
        {
            temp = JSON.parse(JSON.stringify(info)); 

        });

        console.log("key value: ",temp.vin);
    }
}

无法启动node.js,错误消息的发布方式如下:

/home/ttt/insight/node_modules/insight-bitcore-api/lib/Rpc.js:239     console.log(“key value:”,temp ['vin']);                                   ^ TypeError:无法读取未定义的属性“vin”

有谁知道这段代码有什么问题?

我认为这不是变量范围问题,因为temp与第一个代码段和第二个段在同一范围内。

谢谢!

0 个答案:

没有答案