首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >coffeescript赋值

coffeescript赋值
EN

Stack Overflow用户
提问于 2012-08-21 12:58:58
回答 2查看 3.1K关注 0票数 2

我有一个关于这段代码的问题:

代码语言:javascript
复制
getContent: (index) ->
  content = @get('content')
  element = content.objectAt(index)
  if element?
    [type, clientId] = element
    store = @get('store')

    if clientId?
      store.findByClientId(type, clientId)

我特别说的是这一行:

代码语言:javascript
复制
[type, clientId] = element

我不明白如何从一个变量中分配两个值。

元素必须是一个数组才能成功地将值赋给左边的数组吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-21 13:08:12

这就是语法糖,意思是:

代码语言:javascript
复制
type = element[0], clientId = element[1];

另外,你应该知道,有一个地方你可以在编译的coffeescript中看到:http://coffeescript.org/ (try coffeescript标签)

所有的coffeescript代码都在javascript中:

代码语言:javascript
复制
getContent: function(index) {
  var clientId, content, element, store, type;
  content = this.get('content');
  element = content.objectAt(index);

  if (element != null) {
    type = element[0], clientId = element[1];
    store = this.get('store');

    if (clientId != null) {
      return store.findByClientId(type, clientId);
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2012-08-21 13:29:09

我不明白如何从一个变量中分配两个值。

CoffeeScript实现了它所谓的Destructuring Assignment。在http://coffeescript.org/#destructuring上可以看到完整的解释,但我在这里引用了一些示例。

它可以用于简单的列表赋值。

代码语言:javascript
复制
weatherReport = (location) ->
  # Make an Ajax request to fetch the weather...
  [location, 72, "Mostly Sunny"]

[city, temp, forecast] = weatherReport "Berkeley, CA"

其中解构赋值语句被编译为

代码语言:javascript
复制
_ref = weatherReport("Berkeley, CA"), city = _ref[0], 
temp = _ref[1], forecast = _ref[2];

元素必须是一个数组才能成功地将值赋给左边的数组吗?

不,它也可以用于对象。从CoffeeScript文档“解构赋值可以用于任何深度的数组和对象嵌套,以帮助提取深度嵌套的属性。”

代码语言:javascript
复制
futurists =
  sculptor: "Umberto Boccioni"
  painter:  "Vladimir Burliuk"
  poet:
    name:   "F.T. Marinetti"
    address: [
      "Via Roma 42R"
      "Bellagio, Italy 22021"
    ]

{poet: {name, address: [street, city]}} = futurists

其中解构赋值语句被编译为

代码语言:javascript
复制
_ref = futurists.poet, 
name = _ref.name, (_ref1 = _ref.address, street = _ref1[0], city = _ref1[1]);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12048654

复制
相关文章

相似问题

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