2つのコードスニペットがあり、アラートが発生すると想定しています。ただし、最初の結果はなし、2番目のアラートは実行されます。予期せぬ動作をするClojurescriptマップ関数
(map #(.alert js/window %) ["hey1" "hey2"])
このわずかな変更は、警告の問題を修正するだけでなく、期待どおりに(nil nil)を出力します。質問はWHYですか?
(print (map #(.alert js/window %) ["hey1" "hey2"]))
もう一つの奇妙な観察は、コードに入力されたとき、最初のスニペットは、ブラウザ-REPLから動作しますが、ではないということです。
マップ機能の副作用はありませんが、印刷されていませんか?多分私が知りませんいくつかのコアコードの最適化?
回避策と回答の両方が高く評価されています。もっと情報が必要な場合は、私にコメントでお知らせください。
[org.clojure/clojurescript "1.8.51"]
BOOT_CLOJURE_VERSION = 1.7.0
BOOT_VERSION = 2.5.5
Javaバージョン "1.8.0_101"
説明:Ubuntu 14.04.4 LTS
の可能性のある重複した[副作用が出て、最適化](http://stackoverflow.com/questions/31097067/side-effect-optimized-out) –
はい、彼らは両方とも同じ話題について話しています。しかし、この疑問を疑問視している人々のタイプは、副作用が何であるか、それが問題を引き起こしているかどうかを知りません。私の質問は、その答えが必要な人々によって見つけられる可能性が高いと思います。 ***要約すると、この質問をここに保持する唯一の理由は、質問に単語の副作用が含まれていないということです。***重要だと思わない場合は、削除するのが妥当でしょう。 –