何时在 coffeescript for 循环中使用 "from"、"of" 或 "in"

When to use "from", "of" or "in" in coffeescript for-loops

我发现文档非常混乱。我什么时候应该使用 for x of yfor x from yfor x in y?它在正常 Javascript 中的含义是什么?有哪些选择?

# Coffeescript                       # Translates to Javascript

# Iterables like Arrays and Generators:
for e from arr                       # for (e of arr)

# Arrays: "Comprehension"
for e in arr                         # for (j = 0, len = arr.length; j < len; j++) {

# Arrays, functionally:
arr.forEach (a) =>                   # arr.forEach(a =>

# Objects: "Comprehension"
for k,v of obj                       # for (k in obj) {
                                     #   v = obj[k]

# Objects, only where hasOwnProperty
for own k,v of obj                   # for (k in obj) {
                                     #   if obj.hasProperty(k)
# Or manually, where hasOwnProperty
for [k,v] from Object.entries(obj)   # for (x of obj) {
                                     #   [k, v] = x;
# Or manually, functionally, where hasOwnProperty
Object.entries(obj)                  # Object.entries(obj)
  .forEach ([k,v]) =>                #   .forEach(([k, v]) =>

# As embedded Javascript
`for (e of arr)`                     # for (e of arr)
`for (k in obj)`                     # for (k in obj)

简而言之:

  • from 变为 of
  • in 成为一个复杂的 for(;;) 循环和
  • of 变为 in.