我正在将一段代码从javascript翻译成coffeescript。
for (var i = 0, len = keys.length; i < len; i++) {
k = keys[i];
if (!mailOptions.hasOwnProperty(k))
mailOptions[k] = app.set('mailOptions')[k]
}
我不知道如何处理它并且在doc网站上不清楚,有人可以给我一个明确的解释吗?非常感谢你!
答案 0 :(得分:4)
for key in keys
if not mailOptions.hasOwnProperty key
mailOptions[key] = (app.set 'mailOptions')[key]
守护风格:
for key in keys when not mailOptions.hasOwnProperty key
mailOptions[key] = (app.set 'mailOptions')[key]
编译为:
var key, _i, _len;
for (_i = 0, _len = keys.length; _i < _len; _i++) {
key = keys[_i];
if (!mailOptions.hasOwnProperty(key)) {
mailOptions[key] = (app.set('mailOptions'))[key];
}
}
答案 1 :(得分:1)
这是一种方式(从这里开始:http://js2coffee.org/):
i = 0
len = keys.length
while i < len
k = keys[i]
mailOptions[k] = app.set("mailOptions")[k] unless mailOptions.hasOwnProperty(k)
i++
但我不会这样做。我会这样做:
for k in keys
mailOptions[k] = app.set("mailOptions")[k] unless mailOptions.hasOwnProperty k
这将输出以下内容(不包括var
,它也输出):
for (_i = 0, _len = keys.length; _i < _len; _i++) {
k = keys[_i];
if (!mailOptions.hasOwnProperty(k)) {
mailOptions[k] = app.set("mailOptions")[k];
}
}
或者,如果你想成为发烧友,我不建议在这种情况下,因为它牺牲了一些可读性:
(mailOptions[k] = app.set("mailOptions")[k] unless mailOptions.hasOwnProperty k) for k in keys