最近我调试了一个在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与第一个代码段和第二个段在同一范围内。
谢谢!