hitode909の日記

趣味はマリンスポーツですの日記です

CoffeeScript varなくて怖い

意図せず変数名が被るとスコープが広いほうになってしまって怖い.
これが,

foo = 'global'

class classA
  constructor: ->
    foo = 'a'

class classB
  constructor: ->
    foo = 'b'

こうなる.

var classA, classB, foo;
foo = 'global';
classA = (function() {
  function classA() {
    foo = 'a';
  }
  return classA;
})();
classB = (function() {
  function classB() {
    foo = 'b';
  }
  return classB;
})();


コンパイル後のJavaScriptを見て正しい位置にvarが入ってることを確認しないと不安になる.
varって書くことができれば,classAの中でvar fooと書けるので安心できると思う.
ファイル単位でスコープが統一されるので,細かい単位でファイルを分けることを強制するために,こういう設計になってるのではないか,とか考えたけど,どうなんだろ.