首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoffeeScript变量作用域

CoffeeScript变量作用域
EN

Stack Overflow用户
提问于 2011-12-15 06:42:50
回答 3查看 6.2K关注 0票数 4

有没有办法在"file“作用域(它将被CS封闭)声明一个变量,而不初始化它?一个人为的例子:

代码语言:javascript
复制
init = ->
  counter = 0

inc = ->
  counter += 1

这是行不通的,因为你需要声明“计数器”。将"counter = 0“添加到顶部将使其工作,但"= 0”是不必要的。(一个更实际的例子是在页面加载时访问DOM --没有办法在"file“作用域中正确地初始化它。)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-15 07:05:27

正如您所提到的,您必须在外部作用域上定义它。

代码语言:javascript
复制
counter = null
init = ->
  counter = 0
inc = ->
  counter += 1
票数 14
EN

Stack Overflow用户

发布于 2011-12-15 07:13:41

如果你的函数是对象的一部分,你可以使用@counter,如下所示:

代码语言:javascript
复制
obj = 
  init: ->
    @counter = 0
  inc: ->
    @counter += 1
票数 4
EN

Stack Overflow用户

发布于 2011-12-17 09:15:20

您可以使用带反引号的var counter;,它会直接传递给生成的javascript。

当你遇到这样的问题时,看看生成的javascript。很明显,变量作用域在词法上仅限于函数。

查看生成的javascript通常是理解coffeescript构造的行为的好方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8512794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档