以下のコードを見てください。
var pocket = {
cash: 1000,
showCash: function() {
return this.cash;
}
};
var thomas = {
name: "Thomas",
work: function() {
console.log('I don\'t want to, but I have to... work!');
},
cash: 5000
};
var bird = {
fly: function() {
console.log('I\'m flying!');
}
};
console.log(pocket.showCash());
thomas.showCash = pocket.showCash;
console.log(thomas.showCash());
bird.showCash = pocket.showCash;
console.log(bird.showCash());
var cash = 20;
var showCashFun = pocket.showCash;
console.log(showCashFun());
this
コードは非常に単純で、エンジンがキーワードをどのように解釈するかを表示します。Chrome コンソール内で実行すると、次の出力が得られます。
1000
5000
undefined
20
そしてそれは大丈夫です - 私はそれをすべて理解しています。しかし、node.js コンソールで実行すると、次のようになります。
1000
5000
undefined
undefined
chrome と node.js は両方とも v8 を使用します。どうしてこんなに差がつくのでしょうか?
編集:違いが生じる場合に備えて、私のノードのバージョンはv0.10.8
で、クロムは27.0.1453.93
です。