我尝试使用命名空间将常规函数转换为函数。这是常规功能:
surprise();
function surprise() {
alert('TEST');
}
这与命名空间的功能相同:
var namespace = {};
namespace.surprise();
namespace.surprise = function () {
alert('TEST');
};
我收到以下错误:Uncaught TypeError: namespace.surprise is not a function
答案 0 :(得分:0)
如果在定义函数之前调用,则会得到TypeError
。您必须先定义该功能。在定义它之前,命名空间没有surprise
函数,一旦你调用它,JavaScript就不知道你在说什么。
不需要首先定义普通函数的原因是:
函数语句是魔术并且导致其标识符在其代码块*中的任何内容被执行之前被绑定。
那来自here。 function
语句必须使用function
关键字定义,而不是存储在如下变量中:
var myFunc = function () {
...
}
以上述方式进行治疗。由于名称空间将函数存储到变量中,因此它们在定义之前就失去了被使用的能力。