为什么javascript允许$为函数名称?

0 javascript programming-languages specifications

我开始喜欢jQuery,但作为PHP开发人员,我讨厌使用它

$().stuff
Run Code Online (Sandbox Code Playgroud)

众所周知$,PHP标记变量.我想javascript中的jQuery声明了这样的函数

function $(element) {/*stuff*/}

javascripts是否允许$作为func的名称?这是一个好行为吗?

我知道只有标准[0-9a-zA-Z_]可以是funcs/vars的名字.

我错过了什么吗?

谢谢

Bra*_*des 7

$在PHP中的使用是一个彻头彻尾的错误,这也是由Perl的发明者做出的.变量的前缀是一个完整的计算机语言多余的,因为像标识符foobar可假设为无资质的变量-还有什么的标识符来识别?:-)问题是发明这些语言的业余爱好者对Unix shell非常熟悉,他们显然没有意识到那些在$shell变量引用之前的$PATH内容并不是一个漂亮的语言特性,而是一个丑陋的必要性事实上,在shell脚本中,单词通常可以"自己"出现,就像你说的那样:

$ echo PATH
PATH
$ echo $PATH
/usr/local/bin:/usr/bin:/bin
Run Code Online (Sandbox Code Playgroud)

换句话说,像shell这样的文本替换语言中$需要一个类似于"这是一个变量!" 的转义字符,并且转义在TCL之类的东西中也很重要,当然,在现代模板语言中,你有除了引入动态信息的变量引用和循环之外,能够区分应该复制到网页中的所有普通文本.

但是普通的编程语言不能通过文本替换来工作,因此$Perl和PHP中的语言都是残留的和噪音.

由于$在JavaScript中没有其他用途,因此对于是否将其作为变量的"普通字母"提供是一种简单的美学判断.JavaScript说"是",Python说"不",我已经习惯了两种选择.我想它现在"看起来像JavaScript"对我$有效!

但是在任何情况下,你都不应该让Perl和PHP的可怕选择让你的美学判断得到通知,这是错误的选择!相反,问问自己是否$看起来像资本一样S,你可以认为它"足够接近一个字母",或者它看起来永远像你的象征.这是真正的选择.

  • PHP中的$不是前缀.它是一个函数本身,它接受任何正确的函数,并使用该名称解析变量的值.这也是为什么`$$ test`等工作的原因. (3认同)