CoffeeScriptハマリどころ撰集
1644 ワード
ぽすけて
ってなるときのための、プチはまりをノウハウ化しようというページ。このページに完成はありません。私がCoffeeScriptを放棄したとき、多分、更新が止まるって感じ。項目を足すような更新を行う度に通知にするんで、それがウザいってひとはストックしない方が良いよ。
コンパイルエラー関係
- なんちゃらOUTDENTとゆわれるんだけど、インデントは綺麗だよ
- thisを使わないといけない場面じゃないかい? もしくは、ダブルアローで束縛しなくちゃいけない場面じゃないかい?
- 変数を「知らん」ゆわれる
- 存在確認演算子使え
正規表現マッチ
- 思ったやつにマッチしない
- それ、JavaScriptでもやったでしょ! えーと、直書きのときと違って、文字列リテラルのときは2重にエスケープが必要だよ。バックスラッシュが2倍になる。あと文脈的なもんにマッチさせたいときは、「\b」とか役に立つから思い出しておこう。
- やっぱり正規表現マッチの後、結果にアクセスしたら墜ちる
- それ、JavaScriptでもやったでしょ! マッチしなかったときの返値はnullだよ。見つからないときの返値が-1なのは、アレだ。indexOf
レースコンディション
- なんか、次のコードが先行して走ってるんだけど
- ひとつはインデントミス。並行実行になってる。次は、```setTimeout (->FUNC()),0```とやろうとして矢印忘れるケース。似てるけど、```setTimeout FUNC,0```とやろうとして()付けちゃうケース
クラスと関数
- クラスメンバにアクセスできない
- thisを使わないといけない場面じゃないかい? もしくは、ダブルアローで束縛しなくちゃいけない場面じゃないかい? この辺、かなり色々ありそうだ。
- クラスメソッドにapplyを使うと挙動が違う
- それ、メソッドに見せかけた怪しいやつです。Function.prototype.apply.callを使いませう。
配列
- なんか、思ってたのと違うもんが出てきた
- Javascriptでも同じ! とりあえず、メソッドを連鎖させてかっこつけるのやめれ。```.shift()```の返値は先頭にあった1要素だけなんで、```array.shift().shift()```なんて多重配列の場合しかあり得ないよ。後は、.concat()の結果を代入するのは意味ナッシングだからやめれ。同じものを参照しているので、混乱の元だ
とりあえずここまで
- 思ったやつにマッチしない
- それ、JavaScriptでもやったでしょ! えーと、直書きのときと違って、文字列リテラルのときは2重にエスケープが必要だよ。バックスラッシュが2倍になる。あと文脈的なもんにマッチさせたいときは、「\b」とか役に立つから思い出しておこう。
- やっぱり正規表現マッチの後、結果にアクセスしたら墜ちる
- それ、JavaScriptでもやったでしょ! マッチしなかったときの返値はnullだよ。見つからないときの返値が-1なのは、アレだ。indexOf
レースコンディション
- なんか、次のコードが先行して走ってるんだけど
- ひとつはインデントミス。並行実行になってる。次は、```setTimeout (->FUNC()),0```とやろうとして矢印忘れるケース。似てるけど、```setTimeout FUNC,0```とやろうとして()付けちゃうケース
クラスと関数
- クラスメンバにアクセスできない
- thisを使わないといけない場面じゃないかい? もしくは、ダブルアローで束縛しなくちゃいけない場面じゃないかい? この辺、かなり色々ありそうだ。
- クラスメソッドにapplyを使うと挙動が違う
- それ、メソッドに見せかけた怪しいやつです。Function.prototype.apply.callを使いませう。
配列
- なんか、思ってたのと違うもんが出てきた
- Javascriptでも同じ! とりあえず、メソッドを連鎖させてかっこつけるのやめれ。```.shift()```の返値は先頭にあった1要素だけなんで、```array.shift().shift()```なんて多重配列の場合しかあり得ないよ。後は、.concat()の結果を代入するのは意味ナッシングだからやめれ。同じものを参照しているので、混乱の元だ
とりあえずここまで
- クラスメンバにアクセスできない
- thisを使わないといけない場面じゃないかい? もしくは、ダブルアローで束縛しなくちゃいけない場面じゃないかい? この辺、かなり色々ありそうだ。
- クラスメソッドにapplyを使うと挙動が違う
- それ、メソッドに見せかけた怪しいやつです。Function.prototype.apply.callを使いませう。
配列
- なんか、思ってたのと違うもんが出てきた
- Javascriptでも同じ! とりあえず、メソッドを連鎖させてかっこつけるのやめれ。```.shift()```の返値は先頭にあった1要素だけなんで、```array.shift().shift()```なんて多重配列の場合しかあり得ないよ。後は、.concat()の結果を代入するのは意味ナッシングだからやめれ。同じものを参照しているので、混乱の元だ
とりあえずここまで
現状の凶悪さランキングとしては、レースコンディションの項かな。
Author And Source
この問題について(CoffeeScriptハマリどころ撰集), 我々は、より多くの情報をここで見つけました https://qiita.com/mrpepper/items/397475bc1b64c485a9e0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .