2

そこで、Coffee Script について、おそらくばかげた質問をしたいと思います。2度目のチャンスを与えていますが、なぜすべてを返すのですか?

関数の最後のステートメント/行であることと関係がありますか? どうすればこれを無効にできますか?コメントや何かを最後の「表現」として入れると、それが「文書化された」機能であることはわかっていますが、そうではありません。いいえ、そうではありません。どこにでも返品がないのはどうすればよいですか? ダウンロード/実行時間を節約しますか?

確かに、このような振る舞いはジットを台無しにしますか?

(locate =
    getPosition: () ->
        # Check we support geolocation
        throw Exception 'Your browser doesn\'t support location based services!' if !navigator.geolocation

        navigator.geolocation.getCurrentPosition (pos) ->
            console.log pos
)

にコンパイルします

(function() {
  var locate;

  locate = {
    getPosition: function() {
      if (!navigator.geolocation) {
        throw Exception('Your browser doesn\'t support location based services!');
      }
      return navigator.geolocation.getCurrentPosition(function(pos) {
        return console.log(pos);
      });
    }
  };

}).call(this);

[編集]

私が気にする理由は、これが私が構築したアプリの非常に大きなライブラリの 1 つに過ぎないからです。500 個の関数があり、そのうちの 200 個が数値やオブジェクトなどを返す代わりに dom に対して何かを行うとしたら、その余分な 200 個はリターンは、私が望まない、または必要としない余分な 1.2k のデータです。

また、リターンのない関数、リターン、undefinedおよびよくリターンする関数についてはnull、説明の必要はありません。私がこれをチェックするのに十分なほど愚かだったら、それは全面的に間違っているでしょう.

いくつかのパフォーマンスの違いがあると確信していますが、それについてはわかりません。現在、jsperfs を実行する時間がありませんが、興味があります。

未定義およびヌル

4

2 に答える 2