return関数には非常に単純なロジックがありますが、期待どおりに機能しません。もちろん、コードを少し長くして問題を解決することもできますが、できるだけ小さくしたいと思います。
これが私のコードです:
#Return title if exists or false otherwise
getPageTitleFromMainContent = (mainContent) ->
mainContent.find('#pageTitle') ?.length ?= false
if y = (getPageTitleFromMainContent $("#mainContent"))
y.css color:red
ご覧のとおり、#mainContentで#pageTitleが見つかった場合は、赤になっているはずです。ただし、関数が見つかった場合は#pageTitleを返さず、.lengthを返します。
js2coffee.orgから、コードが次のようにコンパイルされていることがわかります。
var getPageTitleFromMainContent, y;
getPageTitleFromMainContent = function(mainContent) {
var _ref, _ref1;
return (_ref = mainContent.find('#pageTitle')) != null ? (_ref1 = _ref.length) != null ? **_ref1 : _ref.length = false : void 0;**
};
if (y = getPageTitleFromMainContent($("#mainContent"))) {
y.css({
color: red
});
}
そして、それは_ref : _ref.length = false : void 0;
、ではなく、である必要があり_ref**1** : _ref.length = false : void 0;
ます。
ありがとうございました!