CoffeeScript

CoffeeScriptのレキシカルスコープ

More than 5 years have passed since last update.

CoffeeScriptでは基本的に、
ローカルスコープの外側で宣言された変数と同名の変数を
ローカルスコープ内で別の目的で使えない。
外側の変数を書き換えちゃうからね。

ちょっと古い記事だけど、どんな問題があるかはこちらとかを参考に。
http://www.sixapart.jp/techtalk/2012/01/coffeescript.html

自分は、今のところ問題になった事ないし、
自分が把握して書いている範囲であれば、今後もあまり問題ないかなぁと思う。

けど、複数人で作業する場合や、
joinオプションで連結とかで事故が起こるのは、
確かにちょっとありそうですね。

CoffeeScriptには明示的にレキシカルスコープを宣言する構文はありませんが、
抜け道を見つけたのでメモっておく。

ただ、常に明示的に宣言を書いて使い分けない限りは、
上記の問題は回避できないです。

CoffeeScriptが好きな人は、
そんな使い方しないと思うけど、
ちょっと同じ名前を使いたい時とかには使えると思う。

hoge = 'hoge'

do ->
    `var hoge` #ここ
    hoge = 'fuga'
    console.log hoge

do ->
    console.log hoge

単純にjsとしてムリヤリ出力しているだけです。

ちなみに、ローカルのみで使っても、
var hogeが2回出力される事はありませんでした。

do ->
    `var hoge` #ここ
    hoge = 'fuga'
    console.log hoge