回答編集履歴
3
値に焦点を絞って全面的に変更
answer
CHANGED
@@ -1,29 +1,95 @@
|
|
1
|
-
###
|
1
|
+
###あらすじ
|
2
2
|
|
3
|
-
電卓で計算をして計算結果の値が0だったとき、ディスプレイにはそのまま0が表示されます。
|
4
|
-
JavaScript
|
3
|
+
JavaScriptを最近学び始めた見習いエンジニアの山田さん。
|
4
|
+
今日の仕事を終えて帰宅する途中の山田さんは買い物をするために近所のスーパーへ向かうようです。
|
5
5
|
|
6
|
-
|
6
|
+
###第一章「null - 値に内容が無いことを明示するための宣言」
|
7
7
|
|
8
|
-
|
8
|
+
山田さんは、まず好物である暴君ハ○ネロを買おうとお菓子売り場へ行きました。
|
9
|
+
しかし、暴君ハ○ネロが置いてあるはずの売り場には肝心の商品がありません。
|
10
|
+
店員さんに在庫はないか尋ねてみたところ、店員さんはこう答えました。
|
9
11
|
|
10
|
-
|
12
|
+
「暴君ハ○ネロは某外国人団体の爆買いで全部売り切れてしまいまして、今日はもう在庫がないんですよ」
|
11
13
|
|
12
|
-
|
14
|
+
なんということでしょう。
|
13
15
|
|
16
|
+
```JavaScript
|
14
|
-
|
17
|
+
var tyrant_haxxnero_stock = null;
|
15
|
-
|
18
|
+
console.log('暴君ハ○ネロの在庫:', tyrant_haxxnero_stock);
|
19
|
+
```
|
16
20
|
|
17
|
-
な
|
21
|
+
「在庫が存在しない」と言われてがっくりと肩を落とした山田さんでしたが、無いものは仕方がありません。
|
22
|
+
山田さんは買い物を続けるため、別の売り場へと行くことにしました。
|
18
23
|
|
19
|
-
###
|
24
|
+
###第二章「0 - 数値を表している」
|
20
25
|
|
26
|
+
商品をかごに入れた山田さんはレジへ向かいました。
|
21
|
-
|
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
修正
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
やや修正
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
|
|