BlackerPanda 2012-10-08 14:29:53

[JavaScript] これではまった このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

しばらくなやんだよ。なんでだよといいたかった。

var a=b=3,//これはOK
before=result=new Array;//これ、before[3]=5とかするとresult[3]にも5が入る!!なぜなのだ!!

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント(13)

#1 math_neko 2012-10-08 14:36:50  

そりゃ同じ配列参照してるからねぇ、としか言えません。

#2 InternalServerE 2012-10-08 21:01:03  

1行目から既に汚物臭が漂ってる

#3 Chiether 2012-10-09 01:51:04  

newならいいんだけど。 a = b = [1,2,3] とか書ける言語だと 直感的に動作が違うように見えて、モンニョリするんだよなぁ。動作おかしい時に、大体パっと思いつくけど。

#4 InternalServerE 2012-10-09 13:46:45  

ちなみに、念のため投稿者さんにきいてみたいのだけど、
var a=b=3;var a=3; var b=3;と等価だ」
なんて誤解をしてたりしないよね?
1行目の「これはOK」というコメントが気になってしまった。

#5 BlackerPanda 2012-11-08 08:36:33  

!!?では http://www.openspc2.org/reibun/javascript2/variable/basic/0003/index.html これってミスっているのですか!?

#6 hanachin_ 2012-11-08 12:06:53  

1行目のbがグローバル変数になってますね。

#7 shoota 2012-11-08 13:26:01  

1行目、なぜコンマ

#8 ekykwan 2012-11-08 13:30:57  

var a = 1, b = 2, c = 3; みたいに、コンマは別に問題ないよ

#9 InternalServerE 2012-11-08 20:42:19  

> 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を代入する」という構文だと誤解される。
    (正しくは、、面倒だから省略。代入演算子も立派な演算子である、というニュアンスをヒントに自分で勉強されたし)

#10 BlackerPanda 2012-11-09 07:42:20  

深い…勉強になります。というか知らなかった私はまだまだ勉強不足ですね(汗)

#11 hako584 2012-11-09 09:03:22  

var a, b, before, after; とまとめて初期化すれば問題なかったんだけどね…。そのへん自動でやってくれるcoffeeScriptが流行ればいいのだけど。 上のコードだと bとresult がグローバル変数になっちゃいます。

#12 InternalServerE 2012-11-10 13:11:31  

個人的には、変数宣言不要とか、暗黙的にやっちゃう系の言語は苦手だなぁ。。
前置きもなく急に新参者に登場されると、「あれ、この変数、何だろ」と面喰らい、そこで思考が一旦、止まる。読みづらいっす。

あと、変数名のタイプミスひとつが致命傷になるのもツラい。

#13 jkr_2255 2013-03-01 14:39:24  

そんなあなたに、'use strict'; (使える前提条件はもちろんありますが)

コメント投稿には、twitter認証が必要です。

Twitter認証

このウンコードに臭った人は、こちらのウンコードにも臭ってます

[Java] is禁止令

このエントリーをはてなブックマークに追加

ウンコードの趣旨とは違い、レビューで指摘...

// Mod yamada Start

// 一般的に考えて真偽値を返すメ...

鑑賞する »

[HTML] お前の<html>は天を突く<scrip...

このエントリーをはてなブックマークに追加

天元突破してるHTML

**s...

<script type="text/javascript" >
// (ry...

鑑賞する »

[JavaScript] 吐き気がする呪いのインデント

このエントリーをはてなブックマークに追加

この前適当に書いたコード。適当にやってた...

function fact(x) {
//どっかから拾って貼り付けたのバレバレ...

鑑賞する »