我想知道为什么Vector变量这种自我执行JavaScript函数不需要前一个变种中定义的?这只是创建命名函数的其他类型的语法吗?这是否这样做,所以我们不能将Vector作为参数传递给其他函数?JavaScript函数定义
(function() {
Vector = function(x, y) {
this.x = x;
this.y = y;
return this;
};
//...snip
})()
我想知道为什么Vector变量这种自我执行JavaScript函数不需要前一个变种中定义的?这只是创建命名函数的其他类型的语法吗?这是否这样做,所以我们不能将Vector作为参数传递给其他函数?JavaScript函数定义
(function() {
Vector = function(x, y) {
this.x = x;
this.y = y;
return this;
};
//...snip
})()
定义Vector
任何其他方式只会封闭的范围内创建;并且在关闭之外将不可用。
(function() {
var Vector = function(x, y) {
this.x = x;
this.y = y;
return this;
};
function Vector() {
// blah
};
//...snip
})()
var something = new Vector() // ERROR :<
没有 “要求” 的var
关键词;使用它定义变量可用的范围。不使用它意味着变量是在全局范围内创建的。
定义的变量,而不var
使得全球。上述
的代码构造使得向量在命名空间,因为它可能是打算用作构造,这可能是确定一个全局变量。
我不会建议增加全局命名空间,其实看看requirejs它的一个非常好的方式与模块化的JS工作。
Vector
在这种情况下将附加到当前this
这将是window
。至少在你提供的代码中,似乎并不需要包含自我执行功能。
感谢大家的帮助。 VS2008 JS智能感知可能更多的问题;但由于某些原因,Vector并没有出现在自执行功能之外...... – Pierreten 2010-05-07 18:29:50