知道为什么在coffeescript中发生这种情况

时间:2015-07-07 15:25:28

标签: javascript coffeescript

在运行这些行之后,我在coffeescript中有以下代码,str的值仍为" d41d8cd98f00b204"。关于我可能做错什么的任何想法?

ClassLoader

4 个答案:

答案 0 :(得分:2)

我认为in仅适用于数组,请尝试:

str = str + dataDict[ind] if dataDict[ind]

答案 1 :(得分:2)

我做:

append = dataDict[ind]
str = str + append if append

你做的是编译:

if (__indexOf.call(dataDict, ind) >= 0) str = str + dataDict[ind];

,其中

__indexOf === [].indexOf //Array.prototype's indexOf

Array.prototype' s indexOf无法处理非数组对象。

答案 2 :(得分:2)

来自fine manual

  

您可以使用in来测试数组的存在,并使用of来测试JavaScript对象密钥的存在。

in用于检查元素是否在数组中(就像你使用for ... in迭代一个数组一样),如果你想测试一个键是否在一个对象中你是使用of(就像你使用for ... of迭代一个对象一样):

str = str + dataDict[ind] if ind of dataDict
# -------------------------------^^

答案 3 :(得分:0)

检查if ind in dataDict的扩展:

if (indexOf.call(dataDict, ind) >= 0) {
  str = str + dataDict[ind];
}

检查if dataDict.hasOwnProperty(ind)应该可以正常运行。