LoginSignup
7
7

More than 5 years have passed since last update.

CoffeeScriptのレキシカルスコープ

Posted at

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
7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7