HTML5 Canvas の線ダッシュを設定するために、いくつかの Clojurescript コードがあります。これはクロスブラウザーの問題の典型的なケースであるため、最初に Canvas Context オブジェクトに属性があるかどうかを確認してからsetLineDash、それを呼び出します (属性エラーなどを回避するため)。aget名前変更を防ぐため、この構文を選択しました。
(when (aget c "setLineDash")
((aget c "setLineDash") c dash))
関連する行は、「空白」モードで Google Closure によってコンパイルされます。
if(cljs.core.truth_(c["setLineDash"])) {
c["setLineDash"].call(null, c, dash)
}
次に、高度な最適化モードで次のことを行います。
y(a.setLineDash) && a.setLineDash.call(m, a, c);
だから、コンパイルは大丈夫だと思います。aは c の変更された名前のようですが、yおそらくcljs.core.truth_. コードは Mozilla Firefox (adv. と空白の両方) と Google Chrome (空白) で動作します。次の理由により、高度なコンパイルは Google Chrome では機能しませんTypeError。

オブジェクトの一部であるため、これはちょっと奇妙.setLineDashです(そして空白モードで動作します)。My "feeling": 今、私が奇妙に感じるmのは call のパラメーターです。これがnullこの振る舞いの理由なのだろうか?ある意味で、私はこれについて判断するには、Javascript の内部構造にあまり自信がありません。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call によると、 の引数のm場所にあります。thisfun.call