哪些字符可以用来命名JavaScript变量?
我想为工作中的非javascript用户创建一个小型的“扩展库”(当涉及到这种语言时,他们似乎都很拘谨)。我喜欢jQuery和Prototype都使用$ dollar符号,因为我使用jQuery,所以我正在寻找另一个很好的单字符符号来使用。
我意识到我可以只测试一些字符,但我希望缩小字符列表的范围(考虑到未来可能与另一个流行库集成)。
哪些字符可以用来命名JavaScript变量?
我想为工作中的非javascript用户创建一个小型的“扩展库”(当涉及到这种语言时,他们似乎都很拘谨)。我喜欢jQuery和Prototype都使用$ dollar符号,因为我使用jQuery,所以我正在寻找另一个很好的单字符符号来使用。
我意识到我可以只测试一些字符,但我希望缩小字符列表的范围(考虑到未来可能与另一个流行库集成)。
当前回答
JavaScript变量可以有字母、数字、美元符号($)和下划线(_)。不能以数字开头。
通常库使用$和_作为你在任何地方都会用到的函数的快捷方式。虽然名称$或_没有意义,但它们的简短是有用的,因为您将在任何地方使用该函数,因此希望知道它们的含义。
如果你的库不包括让一个函数在任何地方都被使用,我建议你使用更有意义的名称,因为这些名称将帮助你和其他人理解你的代码在做什么,而不必牺牲源代码的美观性。
例如,您可以看看了不起的DateJS库和它所允许的语法糖,而不需要任何符号或短名称变量。
你应该首先让你的代码实用,并且只有在试着让它漂亮之后。
其他回答
我写了一个小故障工作空间,迭代所有的代码点,并在eval('var ' + String.fromCodePoint(#) + ' = 1')工作时发出字符。
它一直在继续,继续,继续....
JavaScript变量可以有字母、数字、美元符号($)和下划线(_)。不能以数字开头。
通常库使用$和_作为你在任何地方都会用到的函数的快捷方式。虽然名称$或_没有意义,但它们的简短是有用的,因为您将在任何地方使用该函数,因此希望知道它们的含义。
如果你的库不包括让一个函数在任何地方都被使用,我建议你使用更有意义的名称,因为这些名称将帮助你和其他人理解你的代码在做什么,而不必牺牲源代码的美观性。
例如,您可以看看了不起的DateJS库和它所允许的语法糖,而不需要任何符号或短名称变量。
你应该首先让你的代码实用,并且只有在试着让它漂亮之后。
实际上,ECMAScript在第15页上说: 标识符可以以$、下划线或UnicodeLetter开头,然后继续(就在它下面)指定UnicodeLetter可以是Unicode类别Lo、Ll、Lu、Lt、Lm和Nl中的任何字符。 当你查阅这些分类时,你会发现它提供了比拉丁字母更多的可能性。只要在谷歌中搜索“Unicode类别”,你就可以找到它们。
下面是创建变量名的一个快速建议。
如果您希望变量在Firefox中使用时不发生冲突,请不要使用变量名“_content”,因为该变量名已被浏览器使用。我发现这一点很困难,不得不在一个大型JavaScript应用程序中更改所有使用变量“_content”的地方。
据我所知,公认的答案将排除许多有效的标识符。下面是一个符合规范的正则表达式(参见7.6章关于标识符)。使用RegexBuddy创建它,您可以在http://samples.geekality.net/js-identifiers上找到解释的导出。
^[$_\p{L}][$_\p{L}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\u200C\u200D]*+$
且名称不能为以下保留字。
Break, do, instanceof, typeof, case, else, new, var, catch, finally, return, void, continue, for, switch, while, debugger, function, this, with, default, if, throw, delete, in, try, class, enum, extends, super, const, export, import, implements, let, private, public, yield, interface, package, protected, static, null, true, false