2

我有一个名为 age 的变量和一个名为 AGE 的函数。忽略我目前遇到的 JScript 不区分大小写的问题,即 age(dob) 和 AGE(dob) 都可以工作......

为什么 JScript 尝试将年龄变量用作函数?我最好的猜测是 jScript 将函数声明视为声明和表达式......

功能年龄(出生日期){
     返回 cmd.Age(birthDate);
};


变量年龄 = 32;
var foo = 年龄;// AGE函数错误

我在 C# 应用程序中使用 ScriptControlClass,并使用 JScript 作为一种简单的嵌入式语言,为我的用户群提供一些简单中复杂度的表达式......

4

3 回答 3

2

确保不要给函数和变量赋予相同的名称。如果你有一个名为 my_cat 的变量和一个名为 my_cat 的函数,JavaScript 将忘记函数应该做什么或你在 my_cat 变量中存储的值。由于这种奇怪的行为,并且因为函数名称区分大小写,因此命名函数的约定与命名变量的约定不同是有意义的。

于 2009-10-27T15:38:47.523 回答
2

在 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" 开始出现,所以你还想添加一些额外的东西来保持独特性。

于 2009-10-27T15:52:30.177 回答
1

这是标准的 JavaScript 语法,在此JavaScript 提示页面上进行了摘要描述。您应该看一下 JavaScript 参考;很多人推荐JavaScript: The Good Parts,由 JavaScript 的原作者写,但你应该在买书之前做你的研究。

于 2009-10-27T15:38:46.633 回答