更新:我的問題是由兩個函數返回而不是一個引起的。 $.each
循環中的回調函數在if/else
塊中生成了回報。儘管我在後面的問題中將其鏈接,但在CoffeeScript編譯爲JavaScript時,有一個關於how to override returns的好問題。這不是該問題的重複;我有一個更具體的問題。如何在我的if/else塊中防止這些不必要的返回?
我正試圖通過移植一些我在JavaScript中使用012xx所做的工作來學習CoffeeScript。假設$foos
是一個布爾數組。我有一個CoffeeScript的功能類似於此:
$ = jQuery
activateCats = ($foos) ->
$.each $foos, (idx, foo) ->
$bar = $(".cats").eq(idx)
if foo
$bar.addClass("ui-state-active")
.removeClass "ui-state-disabled"
else
$bar.removeClass("ui-state-active")
.addClass "ui-state-disabled"
# add another empty return here
return
編譯JavaScript的看起來是這樣的:
var $, doThings;
$ = jQuery;
activateCats = function($foos) { // Function 1
$.each($foos, function(idx, foo) { // Function 2
var $bar;
$bar = $(".cats").eq(idx);
if (foo) {
return $bar.addClass("ui-state-active").removeClass("ui-state-disabled");
} else {
return $bar.removeClass("ui-state-active").addClass("ui-state-disabled");
}
});
};
如果我不包括它編譯成這個底部的回報(請注意返回我的$.each
循環前):
var $, doThings;
$ = jQuery;
activateCats = function($foos) {
return $.each($foos, function(idx, foo) {
var $bar;
$bar = $(".cats").eq(idx);
if (foo) {
return $bar.addClass("ui-state-active").removeClass("ui-state-disabled");
} else {
return $bar.removeClass("ui-state-active").addClass("ui-state-disabled");
}
});
};
我敢肯定,我不希望這些回報在我$.each
循環。我不確定爲什麼CoffeeScript會添加它們,因爲我的函數底部有空的return
。我之前在其他地方遇到過這個問題,但我讀了this thread並解決了這些問題。我已經嘗試了該線程中的各種方法,並且它們都不適用於這種邊緣情況。
如何防止CoffeeScript添加這些退貨?
的[?有什麼辦法來無回用CoffeeScript的東西(可能重複http://stackoverflow.com/questions/7391493/is-there-any-way-to-not-return-something-using-coffeescript) – TheHippo
此問題已被回答。 – TheHippo
@TheHippo如果你閱讀這個問題的最後兩句話,你會看到我已經嘗試過這些解決方案,但他們沒有奏效。 – abdkw