注意:从ECMAScript版本3或5的角度提出了这个问题.在ECMAScript 6发布中引入新功能后,答案可能会过时.
varJavaScript中关键字的功能到底是什么,有什么区别
var someNumber = 2;
var someFunction = function() { doSomething; }
var someObject = { }
var someObject.someProperty = 5;
Run Code Online (Sandbox Code Playgroud)
和
someNumber = 2;
someFunction = function() { doSomething; }
someObject = { }
someObject.someProperty = 5;
Run Code Online (Sandbox Code Playgroud)
?
你什么时候使用其中任何一个,为什么/它做什么?
我有一个加载的JavaScript文件require.
// loaded by require()
var a = this; // "this" is an empty object
this.anObject = {name:"An object"};
var aFunction = function() {
var innerThis = this; // "this" is node global object
};
aFunction();
(function(anyParameter){
console.log(anyParameter.anObject);
})(
this // "this" is same having anObject. Not "global"
);
Run Code Online (Sandbox Code Playgroud)
我的问题是:this在var中a = this;是一个空对象,而this函数中的语句是node.js全局对象的阴影.我知道this关键字在函数中有所不同,但我无法理解为什么第一个this不等于全局,this而函数等于全局.
如何node.js的注入global,以this在功能范围,以及它为什么不其注入到模块的范围?
我检查了很多代码,看到很多人在做
module.exports = (function(){
return {
functionA: function() {
}
},
functionB: function() {
}
};
})();
Run Code Online (Sandbox Code Playgroud)
所以,为什么不只是做
module.exports = {
functionA: function() {
},
functionB: function() {
}
};
Run Code Online (Sandbox Code Playgroud)
谢谢!