在Javascript、Coffeescript或Jquery中,'@'符号是否有特殊含义?

42

我有一些代码看起来像这样

self = @

之后会使用@someMethodName或者self.someMethodName

@有特殊含义吗?


这个符号在jQuery中存在吗? - Eli
所以......这是一个JavaScript文件还是Coffeescript文件? - SDC
@SDC 这是一个 Coffeescript 文件,但如果 Javascript 已经定义了它,你应该也可以使用它。 - Noah Clark
请查看https://dev59.com/aXI-5IYBdhLWcg3w0MDx#9337047。 - Eduardo Cuomo
3个回答

71

@ 不是一个有效的javascript标识符。标识符只能包含$, _, 数字和字母。

在coffeescript中,@ 表示 this

CoffeeScript有一些与关键字this相关的好特性。首先,CoffeeScript使用 @ 符号作为 this 的缩写。例如,@foo 等同于 this.foo。其次,如果您在函数的参数中使用 @ 符号,CoffeeScript会自动将这些值分配为该对象的属性。

编辑:就jQuery而言,与javascript相同的标识符规则适用,因为jQuery只是javascript。有关jQuery中其他用途的@ ,请参见此问题文档


14
值得补充的是,在CoffeeScript中,@foo表示的是this.foo - Trevor Burnham
值得注意的是,当你试图阅读别人的CoffeeScript代码时,=>可能会非常令人困惑。 - cwharris

22
< p >@ 是 Coffeescript 中代表 this 的快捷方式。

因此,

self = @

是 CoffeeScript 的意思:

var self = this;

3
现在为了安全起见,应该把它写成 const self = @ ;) - GrayedFox

1
自从 CoffeeScript 的设计已经过去了几年,不是所有在 CoffeeScript 中提出的内容都被纳入了 ECMA script。它被建议用于 装饰器,而不是作为 this 的快捷方式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接