CNode

请问这条JS语句用coffeescript怎么表达才好。

Zzysam发布于13 年前最后回复13 年前23 回复5736 浏览0 收藏
  for (var i = 0; i < result.length; i++) {
    result[i].content = marked(result[i].content);
  };
查看回复

回复 (23)

A
alsotang#1·13 年前

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

A
alsotang#2·13 年前

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

J
jiyinyiyong#3·13 年前

感觉还是 map 方法习惯...

results.map (result) -> result.content = marked result.content
A
alsotang#4·13 年前
引用 jiyinyiyong感觉还是 map 方法习惯...

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

Z
zysam#5·13 年前
引用 alsotangfor result in results result.content = marked(result.content)

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

A
alsotang#6·13 年前
引用 alsotangfor result in results result.content = marked(result.content)

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

for _r in result:
  do_sth
Z
zysam#7·13 年前
引用 jiyinyiyong感觉还是 map 方法习惯...

这是替换自身的语句吗?

Z
zysam#8·13 年前
引用 alsotangfor result in results result.content = marked(result.content)

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

Z
zysam#9·13 年前
引用 jiyinyiyong感觉还是 map 方法习惯...

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

A
alsotang#10·13 年前
引用 jiyinyiyong感觉还是 map 方法习惯...

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

A
alsotang#11·13 年前
引用 jiyinyiyong感觉还是 map 方法习惯...

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

Z
zysam#12·13 年前
引用 jiyinyiyong感觉还是 map 方法习惯...

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

L
leizongmin#13·13 年前

这样挺好的嘛“

result.forEach(function (item) {
  item.content = marked(item.content);
});
J
jiyinyiyong#14·13 年前
引用 jiyinyiyong感觉还是 map 方法习惯...

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

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

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

J
jiyinyiyong#15·13 年前
引用 jiyinyiyong感觉还是 map 方法习惯...

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

J
jiyinyiyong#16·13 年前
引用 leolovenodejs我建议大家放弃coffeescript!穿那么多衣服干吗?

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

A
alsotang#17·13 年前
引用 jiyinyiyong感觉还是 map 方法习惯...

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

L
leolovenodejs#18·13 年前

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

J
jiyinyiyong#19·13 年前
引用 jiyinyiyong感觉还是 map 方法习惯...

@jiyinyiyong 手抖... 改了是这样

result.content = marked result.content for result in results
Z
zysam#20·13 年前
引用 jiyinyiyong感觉还是 map 方法习惯...

@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语法很令我很迷糊。

J
jiyinyiyong#21·13 年前
引用 jiyinyiyong感觉还是 map 方法习惯...

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

L
leolovenodejs#22·13 年前

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

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

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

L
leolovenodejs#23·13 年前

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

参与回复
登录后即可参与回复。登录