[英]Namespacing issue in Javascript
我正在尝试使用命名空间将常规函数转换为函数。 这是常规功能:
surprise();
function surprise() {
alert('TEST');
}
这与命名空间的功能相同:
var namespace = {};
namespace.surprise();
namespace.surprise = function () {
alert('TEST');
};
我收到以下错误: Uncaught TypeError: namespace.surprise is not a function
如果在定义函数之前调用,则会出现TypeError
。 您必须先定义该功能。 在定义命名空间之前,命名空间没有surprise
功能,一旦你调用它,JavaScript就不知道你在说什么。
不需要首先定义普通函数的原因是:
函数语句是魔术并且导致其标识符在其代码块*中的任何内容被执行之前被绑定。
那是从这里来的 。 function
语句必须使用function
关键字定义,而不是存储在如下变量中:
var myFunc = function () {
...
}
以上述方式进行治疗。 由于命名空间将函数存储到变量中,因此它们在定义之前就失去了使用的能力。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.