duc*_*cin 1 javascript google-chrome v8 this node.js
看看下面的代码:
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());
Run Code Online (Sandbox Code Playgroud)
代码非常简单,并显示引擎如何解释 this关键字.当我在chrome控制台中运行它时,我得到以下输出:
1000
5000
undefined
20
Run Code Online (Sandbox Code Playgroud)
那没关系 - 我理解这一切.但是当我在node.js控制台中运行它时,我得到:
1000
5000
undefined
undefined
Run Code Online (Sandbox Code Playgroud)
chrome和node.js都使用v8.怎么会有这样的差异?
编辑:如果它有任何区别,我的节点版本是v0.10.8和铬是27.0.1453.93.
在node.js中,代码在模块包装器中运行,因此变量不会意外地为全局变量.在Chrome和任何其他浏览器中,您需要自己包装,否则您创建的每个变量都是全局的.
当你直接调用函数时 this将是非严格模式下该调用函数内的全局对象.
所有全局变量都是全局对象的属性,因此您可以通过.cash全局对象的属性访问全局变量cash .
| 归档时间: |
|
| 查看次数: |
1149 次 |
| 最近记录: |