teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

表現訂正

2018/04/23 04:47

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
  > TypeError: cannot read property 'className' of undefined
32
32
 
33
- と計算機がいったなら「ふむふむ、x.classNameとやったけど、xがundefinedだったんだな、じゃぁなんでxはundefinedになったんだろう・・・」と推論を進めていくのは人間にしかできないのです。javascriptエンジンは阿呆ので、
33
+ と計算機がいったなら「ふむふむ、x.classNameとやったけど、xがundefinedだったんだな、じゃぁなんでxはundefinedになったんだろう・・・」と推論を進めていくのは人間にしかできないのです。javascriptエンジンプログラマーの意図は把握きませんので、
34
34
 
35
35
  - classNameというプロパティー名が間違っているのか
36
36
  - xがundefinedだったことが間違っているのか

1

追記

2018/04/23 04:46

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -11,4 +11,29 @@
11
11
  余談:
12
12
  ※: 自分はJsfiddleでControl+Shift+ENTERすると独立したページで動かせるのでデバッグしやすいというのを今回初めて知りました。質問の際にJsfiddleに再現するコードを用意しておくと閲覧者が簡単に動かせていいですね。もちろんJsfiddleが便利とはいえよくデバッグせずに質問するのはよくないと思います。
13
13
 
14
- [https://stackoverflow.com/questions/17271644/jsfiddle-errors-wont-show](https://stackoverflow.com/questions/17271644/jsfiddle-errors-wont-show)
14
+ [https://stackoverflow.com/questions/17271644/jsfiddle-errors-wont-show](https://stackoverflow.com/questions/17271644/jsfiddle-errors-wont-show)
15
+
16
+ ---
17
+ 追記:
18
+
19
+ > デバッグというのをやったことがなく
20
+
21
+ そうでしたか。自分でデバッグしてもわからない場合はどこまでどう調べたかを明記した上で尋ねるのは悪くないと思います。でも全然デバッグせずに尋ねるのはNGです。・・・というより、プログラミングとはどういうものかをよく再認識された方がよいと思います。そもそも自分でデバッグしないことにはプログラムは完成しません。例えばエラーが出たら
22
+
23
+ - そこに書いてあることを「読み」、
24
+ - それが何に起因することか「推測」し、
25
+ - デバッグして掴んだ「事実」を「推測に照らして確認」し、原因を絞り込んでいく
26
+
27
+ いうプロセスを繰り返すのがデバッグです。**デバッグ技術はコードを書くことに負けず劣らず大事**です。
28
+
29
+ 「エラーメッセージに何書いてあるかわからない」と不満になることが多いかもしれません。しかし計算機は「あなたが書いたコードの意味なんぞちっとも理解してやしません」。計算機はコードに書かれている通りに盲目的に実行をすることしかできない「高速な阿呆」ですので、彼が見つけた「局所的な事象=エラー」が何故起こったかはプログラマーたる人間が突き止めるしかないのです。
30
+
31
+ > TypeError: cannot read property 'className' of undefined
32
+
33
+ と計算機がいったなら「ふむふむ、x.classNameとやったけど、xがundefinedだったんだな、じゃぁなんでxはundefinedになったんだろう・・・」と推論を進めていくのは人間にしかできないのです。javascriptエンジンは阿呆ですので、
34
+
35
+ - classNameというプロパティー名が間違っているのか
36
+ - xがundefinedだったことが間違っているのか
37
+ - そもそもこの行が実行されたこと自体が期待外だったのか
38
+
39
+ なんてことをわかってやしません。それゆえ「undefinedにclassNameという属性はありません」としか言うことができないのです。それを解釈して正しい姿をイメージするのは人間だけにできることなんです。