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

回答編集履歴

3

値に焦点を絞って全面的に変更

2016/05/04 07:43

投稿

flat
flat

スコア617

answer CHANGED
@@ -1,29 +1,95 @@
1
- ###0は値に0という数値が存在していることを表
1
+ ###あら
2
2
 
3
- 電卓で計算をして計算結果の値が0だったとき、ディスプレイにはそのまま0が表示されます。
4
- JavaScriptも同じように、値が0だっときはそまま0を返します
3
+ JavaScriptを最近学び始め見習いエンジニア山田さん
4
+ 今日の仕事を終えて帰宅する途中の山田さんは買い物をするために近所のスーパーへ向かうようです。
5
5
 
6
- つまり田中君、今月の君の営業成績は?成約はくつ取れたのかね?」いう問いに対して「……0で。成約はひとつも取れませんでし……という返事が返ってきたわけです。
6
+ ###第一章null - 値に内容が無を明示めの宣言
7
7
 
8
- また、「0」の必要性は語るまでもないかもしれませが、配列の要素の位置など0から始まりますしプログラミング以外も「0度(温度)」「x軸とy軸の0」「経度と緯度の0」「海抜0メートル」「0円(無料)」などの情報うときに0は必要です
8
+ 山田さんは、まず好物ある暴君ハ○ネロ買おうとお菓子売り場へ行ました
9
+ しかし、暴君ハ○ネロが置いてあるはずの売り場には肝心の商品がありません。
10
+ 店員さんに在庫はないか尋ねてみたところ、店員さんはこう答えました。
9
11
 
10
- ###nullは該当するプパティに値が存在しないことを表
12
+ 「暴君ハ○ネは某外国人団体の爆買いで全部売り切れてまいまして、今日はもう在庫がないんでよ」
11
13
 
12
- nullというのはオブジェクトのプロパティに該当する値が存在しないことを表ます
14
+ なんということょう
13
15
 
16
+ ```JavaScript
14
- 洋菓子店で「モンブランください」という注文をしたら「申し訳ございません、ただいま材料の確保が大変難しくなっており、本日はモンブランをお取り扱いしておりません」という返事が返ってきたとイメージしてみてください。
17
+ var tyrant_haxxnero_stock = null;
15
- この場合、洋菓子店がオブジェクト、モンブランという品目がプパティ、モンブランという商品そものがプロパティの値で、品目はあるけど商品は取り扱っていない = 存しない(売り切れて0になったのではない)ことになります。
18
+ console.log('暴君ハ○ネロの在庫:', tyrant_haxxnero_stock);
19
+ ```
16
20
 
17
- お、nullはJavaScriptにおては型のひつであり、null型の値は型と同名のnullのみが認められているので、結果としてnullという値てきその型もnull型とうことになりま
21
+ 「在庫が存在しない言われてがっくりと肩を落とし山田さんでしたがものは仕方がありません
22
+ 山田さんは買い物を続けるため、別の売り場へと行くことにしました。
18
23
 
19
- ###undefinedはプロパティそのものが存在しないことを表
24
+ ###第二章「0 - 数値を表している」
20
25
 
26
+ 商品をかごに入れた山田さんはレジへ向かいました。
21
- undefinedは未定義という意味で参照したプロパティが定義れていないとを表し
27
+ そしてつものよにポイントカードを提示すると店員んがう尋ねした
22
28
 
23
- 洋菓子店で「みそラーメンください」という注文をしたら「申し訳ございません、当店ではみそラーメンは取り扱っておりません」という返事が返ってきたとイメージしてみてください。
24
- この場合、洋菓子店がオブジェクト、みそラーメンという品目がプロパティ、みそラーメは取り扱ってい(洋菓子店の品目として定義されていない)ことになます
29
+ 「500円分お値引ききるポイトが貯まっています。今お使いになられますか?」
25
30
 
26
- ---
31
+ 店員さんの問いに山田さんは「はい、お願いします」と答えました。
32
+ すると、商品をレジに通し終えた店員さんが何かに気づいたような素振りでこう言いました。
27
33
 
34
+ 「お会計は0円ですね」
35
+
36
+ どうやら買い物の金額は丁度500円だったようです。
37
+ そして500円の値引きにより会計は0円。
38
+ 受け取ったレシートにも「合計 ¥0」と印刷されています。
39
+ つまり無料です。
40
+
41
+ ```JavaScript
42
+ // その数値が何の意味を持つのかはその時々で異なる(数・位置・距離・時間・サイズ等々)
43
+ var price = 500;
44
+ var discount = -500;
45
+ var payment = price + discount;
46
+ console.log('会計:', payment);
47
+ ```
48
+
49
+ 会計を済ませた山田さんは少し得した気分を味わいながら店を出ました。
50
+
51
+ ###第三章「undefined - まだ値に何も代入されていないことを表す」
52
+
53
+ 買い物を済ませた山田さんは夕食をとろうと定食屋に入ります。
28
- イメージのやすさを重視し、理解取っ掛かりにできそうなざっくりとした説明にしてみました。
54
+ て席に着いた山田んがメニューいると「煮込み雑炊」文字が目飛び込んできました。
29
- (私自身初心者ようものなので、認識誤りがあるかもせん)
55
+ 完全に煮込み雑炊舌にった山田さんは早速店員さん注文します。
56
+ しかし店員さんの返事は期待したものではありませんでした。
57
+
58
+ 「あ…ごめんなさい。それ、来月からなんですよ。ごめんなさいね」
59
+
60
+ 返ってきた答えに落胆した山田さんは改めて煮込み雑煮を注文しましたが、煮込み雑煮も来月からだと言われて意気消沈してしまい、結局別のものを頼んで食べました。
61
+ 食事を終えた山田さんは、死んだ魚のような目をしながら帰宅しました。
62
+
63
+ ```JavaScript
64
+ // null も含めて値に何も代入されていないときに返ってくる初期値
65
+ var nikomizousui;
66
+ var nikomizouni;
67
+ console.log('煮込み雑炊:', nikomizousui);
68
+ console.log('煮込み雑煮:', nikomizouni);
69
+ ```
70
+
71
+ 「メニューには書いてあるけどまだ用意していない」という予想だにしない出来事にショックを受けた山田さん。
72
+ その日の夜は枕を濡らしながら眠りにつきました。
73
+
74
+ ###後書き
75
+
76
+ これでざっくりとしたイメージを掴んでもらって「違うんだ」と何となくでも分かってもらったら、その後に「JavaScriptには型というものがあって、こういう型があるんだよ~」と型の説明をする感じでどうでしょうか。
77
+
78
+ ```JavaScript
79
+ var tyrant_haxxnero_stock = null;
80
+
81
+ var price = 500;
82
+ var discount = -500;
83
+ var payment = price + discount;
84
+
85
+ var nikomizousui;
86
+
87
+ // 0 と null の型も含めた厳密な比較
88
+ console.log( payment === tyrant_haxxnero_stock );
89
+
90
+ // 0 と undefined の型も含めた厳密な比較
91
+ console.log( payment === nikomizousui );
92
+
93
+ // null と undefined の型も含めた厳密な比較
94
+ console.log( tyrant_haxxnero_stock === nikomizousui );
95
+ ```

2

修正

2016/05/04 07:43

投稿

flat
flat

スコア617

answer CHANGED
@@ -12,7 +12,7 @@
12
12
  nullというのはオブジェクトのプロパティに該当する値が存在しないことを表します。
13
13
 
14
14
  洋菓子店で「モンブランください」という注文をしたら「申し訳ございません、ただいま材料の確保が大変難しくなっており、本日はモンブランをお取り扱いしておりません」という返事が返ってきたとイメージしてみてください。
15
- この場合、洋菓子店がオブジェクト、モンブランという品目がプロパティ、モンブランという商品そのものがプロパティの値で、品目はあるけど商品は存在しない(売り切れて0になったのではなく、元から商品が存在しない)ことになります。
15
+ この場合、洋菓子店がオブジェクト、モンブランという品目がプロパティ、モンブランという商品そのものがプロパティの値で、品目はあるけど商品は取り扱っていない = 存在しない(売り切れて0になったのではない)ことになります。
16
16
 
17
17
  なお、nullはJavaScriptにおいては型のひとつであり、null型の値は型と同名のnullのみが認められているので、結果としてnullという値が返ってきたら、その型もnull型ということになります。
18
18
 

1

やや修正

2016/04/26 03:59

投稿

flat
flat

スコア617

answer CHANGED
@@ -11,8 +11,8 @@
11
11
 
12
12
  nullというのはオブジェクトのプロパティに該当する値が存在しないことを表します。
13
13
 
14
- 洋菓子店で「モンブランください」という注文をしたら「申し訳ございません、モンブランはただいま売切れておりま」という返事が返ってきたとイメージしてみてください。
14
+ 洋菓子店で「モンブランください」という注文をしたら「申し訳ございません、ただいま材料の確保が大変難しくなっており、本日はモンブランをお取扱いしておりません」という返事が返ってきたとイメージしてみてください。
15
- この場合、洋菓子店がオブジェクト、モンブランという品目がプロパティ、モンブランという商品そのものがプロパティの値です。
15
+ この場合、洋菓子店がオブジェクト、モンブランという品目がプロパティ、モンブランという商品そのものがプロパティの値で、品目はあるけど商品は存在しない(売り切れて0になったのではなく、元から商品が存在しない)ことになります。
16
16
 
17
17
  なお、nullはJavaScriptにおいては型のひとつであり、null型の値は型と同名のnullのみが認められているので、結果としてnullという値が返ってきたら、その型もnull型ということになります。
18
18