しばらくなやんだよ。なんでだよといいたかった。
var a=b=3,//これはOK before=result=new Array;//これ、before[3]=5とかするとresult[3]にも5が入る!!なぜなのだ!!
使い方ヒント: 「これは臭う」という行を見付けたら、各行のをクリックしてマーキングしておきましょう(要Twitter OAuth認証)
1行目から既に汚物臭が漂ってる
newならいいんだけど。 a = b = [1,2,3] とか書ける言語だと 直感的に動作が違うように見えて、モンニョリするんだよなぁ。動作おかしい時に、大体パっと思いつくけど。
ちなみに、念のため投稿者さんにきいてみたいのだけど、
「var a=b=3;
はvar a=3; var b=3;
と等価だ」
なんて誤解をしてたりしないよね?
1行目の「これはOK」というコメントが気になってしまった。
!!?では http://www.openspc2.org/reibun/javascript2/variable/basic/0003/index.html これってミスっているのですか!?
> http://www.openspc2.org/reibun/javascript2/variable/basic/0003/index.html
こんなコードを例示してるとは。。
syntaxエラーこそなさそうだけど、以下の点で↑のコード例は罪深い気がする。。
aとbとcを同時にvar宣言しているように誤読される。
(var宣言されているのはaのみ。b, cはvar省略で即代入されてるため、グローバル変数扱いになる)
「aとbとcに123を代入する」という構文だと誤解される。
(正しくは、、面倒だから省略。代入演算子も立派な演算子である、というニュアンスをヒントに自分で勉強されたし)
深い…勉強になります。というか知らなかった私はまだまだ勉強不足ですね(汗)
var a, b, before, after; とまとめて初期化すれば問題なかったんだけどね…。そのへん自動でやってくれるcoffeeScriptが流行ればいいのだけど。 上のコードだと bとresult がグローバル変数になっちゃいます。
個人的には、変数宣言不要とか、暗黙的にやっちゃう系の言語は苦手だなぁ。。
前置きもなく急に新参者に登場されると、「あれ、この変数、何だろ」と面喰らい、そこで思考が一旦、止まる。読みづらいっす。
あと、変数名のタイプミスひとつが致命傷になるのもツラい。
コメント投稿には、twitter認証が必要です。
Twitter認証
そりゃ同じ配列参照してるからねぇ、としか言えません。