哪些字符可以用来命名JavaScript变量?

我想为工作中的非javascript用户创建一个小型的“扩展库”(当涉及到这种语言时,他们似乎都很拘谨)。我喜欢jQuery和Prototype都使用$ dollar符号,因为我使用jQuery,所以我正在寻找另一个很好的单字符符号来使用。

我意识到我可以只测试一些字符,但我希望缩小字符列表的范围(考虑到未来可能与另一个流行库集成)。


当前回答

JavaScript变量可以有字母、数字、美元符号($)和下划线(_)。不能以数字开头。

通常库使用$和_作为你在任何地方都会用到的函数的快捷方式。虽然名称$或_没有意义,但它们的简短是有用的,因为您将在任何地方使用该函数,因此希望知道它们的含义。

如果你的库不包括让一个函数在任何地方都被使用,我建议你使用更有意义的名称,因为这些名称将帮助你和其他人理解你的代码在做什么,而不必牺牲源代码的美观性。

例如,您可以看看了不起的DateJS库和它所允许的语法糖,而不需要任何符号或短名称变量。

你应该首先让你的代码实用,并且只有在试着让它漂亮之后。

其他回答

基本上,以正则表达式形式:[a-zA-Z_$][0-9a-zA-Z_$]*。换句话说,第一个字符可以是字母、_或$,其他字符可以是字母、_、$或数字。

注意:虽然其他回答指出可以在JavaScript标识符中使用Unicode字符,但实际的问题是“我应该使用什么字符作为像jQuery这样的扩展库的名称?”这就是那个问题的答案。您可以在标识符中使用Unicode字符,但不要这样做。编码总是被搞砸。将公共标识符保持在32-126 ASCII范围内,这样比较安全。

JavaScript变量

可以用任意字母、$或_字符作为变量的开头。只要不是以数字开头,你也可以包含数字。

开始:[a-z], $, _

包含:[a-z], [0-9], $, _

jQuery

你可以在你的库中使用_,这样它就可以和jQuery并肩作战了。但是,可以设置一个配置,使jQuery不使用$。它将使用jQuery。要做到这一点,只需设置:

jQuery.noConflict();

本页解释了如何做到这一点。

我写了一个小故障工作空间,迭代所有的代码点,并在eval('var ' + String.fromCodePoint(#) + ' = 1')工作时发出字符。

它一直在继续,继续,继续....

JavaScript变量可以有字母、数字、美元符号($)和下划线(_)。不能以数字开头。

通常库使用$和_作为你在任何地方都会用到的函数的快捷方式。虽然名称$或_没有意义,但它们的简短是有用的,因为您将在任何地方使用该函数,因此希望知道它们的含义。

如果你的库不包括让一个函数在任何地方都被使用,我建议你使用更有意义的名称,因为这些名称将帮助你和其他人理解你的代码在做什么,而不必牺牲源代码的美观性。

例如,您可以看看了不起的DateJS库和它所允许的语法糖,而不需要任何符号或短名称变量。

你应该首先让你的代码实用,并且只有在试着让它漂亮之后。

如果正则表达式不是必须的,最好是让浏览器决定使用eval:

function isValidVarName( name ) {
    try {
        // Update, previoulsy it was
        // eval('(function() { var ' + name + '; })()');
        Function('var ' + name);
    } catch( e ) {
        return false;
    }
    return true;
}

isValidVarName('my_var');     // true
isValidVarName('1');          // false