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