在 JScript/javascript 中,函数是第一类对象。因此,函数也是您可以传递、重用、替换等 的变量。
这应该可以解释为什么你不能这样做。在出现错误的那一行,不清楚您分配给 foo 的内容:它可能是年龄,即值为 32 的数值变量。但也可能是年龄,即函数变量。
换句话说,这是完全合法的:
function age(birthDate) {
return cmd.Age(birthDate);
};
var d = new Date();
var foo = age;
foo(d);
这是这样的:
function print42() {
return 42;
}
print42 = function() {
return 32;
}
print42(); //legal - returns 32
如果您担心避免冲突,可以尝试将函数放在对象中:
var $$MyProjectName = function() {
var MyFunctionName = function() {
// do something
}
}
// later
var $$MyProjectInstance = new $$MyProjectName();
$$MyProjectInstance.MyFunctionName();
请注意名称中的“$”。那里没有什么特别的。'$' 非常适合用作标识符名称的一部分,并且您要确保您的名称是唯一的。然而,多亏了 jQuery 之类的 $"secret" 开始出现,所以你还想添加一些额外的东西来保持独特性。