请问这条JS语句用coffeescript怎么表达才好。
发布于 2年前 作者 zysam 1086 次浏览
  for (var i = 0; i < result.length; i++) {
    result[i].content = marked(result[i].content);
  };
23 回复

for result in results result.content = marked(result.content)

晕,缩进消失了…楼主自己缩进吧…

感觉还是 map 方法习惯…

results.map (result) -> result.content = marked result.content

要用也应该用 forEach,在这个上下文中。

results? 是要替换result.content的值哟。

@zysam 你的 result 取名不好,所以我没有按你的取名而已。如果坚持你的取名就是:

for _r in result:
  do_sth

这是替换自身的语句吗?

@alsotang 还是不明白你的意图,这样操作二维数组的。。

@alsotang do -> result[n].content = marked r.content for r,n in result 我自已琢磨出来了。

@zysam 我觉得 @jiyinyiyong 应该和我一样想哭。。

@zysam 我建议你使用原生 JS 写代码,再慢慢熟悉 CoffeeScript…

@alsotang 不好意思呀,我新学的JS和CS。当看到你们的回复时,就知道自己的提问方式不对。。。

这样挺好的嘛“

result.forEach(function (item) {
  item.content = marked(item.content);
});

@zysam 不用这么麻烦, 不知道你新学, 那可以这样

result.content = marked result.content for results in results

晕, 我用的变量名和你不一样, 留意下 刚开始还是不要两个一起学, 觉得困惑会更多点 如果问我我当然是先 coffee…

@alsotang 还好啦, 刚开始我比他还离谱的

@jiyinyiyong for results in results 改为 for result in results 。

我建议大家放弃coffeescript!穿那么多衣服干吗?

@jiyinyiyong 手抖… 改了是这样

result.content = marked result.content for result in results

用 CoffeeScript 是为了让事情更简单, JS 语法太乱了 如果浏览器环境可以选择不用 JS, JS 本来就不是什么设计优良的语言

@jiyinyiyong

一、

for (var i = 0; i < results.length; i++) {
    results[i].content = marked(results[i].content);
  };

二、

(function() {
  var result, _i, _len;
  for (_i = 0, _len = results.length; _i < _len; _i++) {
    result = results[_i];
    result.content = marked(result.content);
  }
}).call(this);

为什么这两句达到效果一样,我原先以为,第一种才会改变results属性的值。而第二种是results属性的值赋到一个新对象result上,而results本身没有改动。这里的js语法很令我很迷糊。

@zysam 没有在新的作用域里创建 result 这个变量呀 按上边两个代码我看去是没有差别的呀… result 依然是同一个

浏览端: 1、正因为JS的地位不可改变(不可能改变、不让改变,原因自己想),再用coffeescript往上套语义,更厚; 2、coffeescript那也叫编译?

服务端: 1、NodeJS就是用JS搞的,说明这个语言有可取之处; 2、但在服务端,写法完全和同类服务端语言不同(基于事件驱动和单进程,这受客户端的启发);

其它: 1、JS没有类,可很多人喜欢class,这不是找乱嘛; 2、JS对面向对象有自己的理解; 3、我们不能全盘接受,也不能全盘否定,对吧?

管理员把我的回复功能关了,有本事把我号删了?

回到顶部