回答編集履歴

5

@@toStringTag

2019/11/17 10:21

投稿

think49
think49

スコア18166

test CHANGED
@@ -102,4 +102,18 @@
102
102
 
103
103
 
104
104
 
105
+ ---
106
+
107
+
108
+
109
+ ※仕様を読む段階になれば、内部動作が大きく変化している部分はありますが、**同じコードを書けば、同じ結果が返ってくる**という意味での後方互換性は担保されています。
110
+
111
+
112
+
113
+ - `Object.prototype.toString` が `[[Class]]` ではなく、`@@toStringTag` を返すようになりました
114
+
115
+ - `new Array` の要素列挙に `Array.prototype[@@iterator]` が使用されるようになりました
116
+
117
+
118
+
105
119
  Re: takenoko_sand さん

4

markdown

2019/11/17 10:21

投稿

think49
think49

スコア18166

test CHANGED
@@ -90,7 +90,7 @@
90
90
 
91
91
 
92
92
 
93
- 私の知る範囲では、後方互換性がなくなった更新は、独自拡張から逆輸入して標準化された **Object.prototype.__proto__ の削除**ぐらいですね。
93
+ 私の知る範囲では、後方互換性がなくなった更新は、独自拡張から逆輸入して標準化された 「`Object.prototype.__proto__` の削除ぐらいですね。
94
94
 
95
95
 
96
96
 

3

後方互換性

2019/11/17 10:09

投稿

think49
think49

スコア18166

test CHANGED
@@ -50,4 +50,56 @@
50
50
 
51
51
 
52
52
 
53
+ ### 後方互換性
54
+
55
+
56
+
57
+ Pythonはサーバサイドで動く言語なので、Python2からPython3にバージョンアップする際、プログラマの意志でサーバの環境を変更して対応することができます。
58
+
59
+ よって、サーバサイド言語は後方互換性のないバージョンアップをすることが可能です。
60
+
61
+
62
+
63
+ 一方、JavaScriptはクライアントサイドで動く言語(Node.js等のサーバ環境を除く)です。
64
+
65
+ 仮にECMAScriptで「後方互換性がないバージョンアップ」がされた場合、最新バージョンに対応していない古いブラウザを使用しているユーザを切り捨てる事になります。
66
+
67
+ 「HTML4→XHTML2」の移行に失敗した(IE6のシェアが下がらなかった)経緯から、クライアントサイドの言語(HTML,CSS,ECMAScript...etc)は、出来るだけ後方互換性を保つバージョンアップをする傾向にあります。
68
+
69
+ だからこそ、`typeof null` の仕様バグはいつまでも残り続けますし、`document.all` は**故意にEMCAScript仕様に違反する仕様**(HTML Standard)が策定されているのです。
70
+
71
+
72
+
73
+ ```JavaScript
74
+
75
+ console.log(typeof null); // "object" (本来は "null" を返すべき)
76
+
77
+
78
+
79
+ console.log(Boolean(document.all)); // 存在している
80
+
81
+
82
+
83
+ if (!document.all) { // この挙動は故意にECMAScript仕様に違反している (HTML Standard)
84
+
85
+ console.log('document.all is falsy')
86
+
87
+ }
88
+
89
+ ```
90
+
91
+
92
+
93
+ 私の知る範囲では、後方互換性がなくなった更新は、独自拡張から逆輸入して標準化された **Object.prototype.__proto__ の削除**ぐらいですね。
94
+
95
+
96
+
97
+ - [Object.prototype.__proto__ - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/proto)
98
+
99
+
100
+
101
+ そんなわけで、ES5は現在の最新ブラウザでも通用する仕様です。
102
+
103
+
104
+
53
105
  Re: takenoko_sand さん

2

知見を広げる目的

2019/11/17 10:07

投稿

think49
think49

スコア18166

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  作ろうとしているものがES5の範疇で作れるなら、最新仕様を学習しなくても良い(MAY NOT)、といえるでしょう。
14
14
 
15
- どちらも選択可能なら、当然、最新仕様を学ぶべき(SHOULD)です。
15
+ ただし、必要性に関係く、自身の知見を広げる目的なら、最新仕様を学ぶべき(SHOULD)です。
16
16
 
17
17
 
18
18
 

1

必要性

2019/11/17 07:58

投稿

think49
think49

スコア18166

test CHANGED
@@ -1,6 +1,34 @@
1
- 勿論、最新仕様を覚えるに越したことはありません。
1
+ ### 必要性
2
2
 
3
+
4
+
5
+ 端的にいえば、「必要なら学び、不要なら学ばない」
6
+
7
+ これだけです。
8
+
9
+ 必要性を図る目安は、**作れるか、作れないか**
10
+
11
+
12
+
13
+ 作ろうとしているものがES5の範疇で作れるなら、最新仕様を学習しなくても良い(MAY NOT)、といえるでしょう。
14
+
15
+ どちらも選択可能なら、当然、最新仕様を学ぶべき(SHOULD)です。
16
+
17
+
18
+
19
+ - [RFC 2119 - Key words for use in RFCs to Indicate Requirement Levels (日本語訳)](http://www.cam.hi-ho.ne.jp/mendoxi/rfc/rfc2119j.html)
20
+
21
+
22
+
23
+ しかし、それを判断できるのは、実際に作ろうとしている takenoko_sand さんです。
24
+
3
- ることなら是非、学習してください。
25
+ 自分自身が持ちうる知識(ES5)ることを試みてその結果で判断してください。
26
+
27
+ それが世の多くのプログラマが意識せずともやっている「必要になったら学ぶ」という姿勢です。
28
+
29
+
30
+
31
+ ### Exploring ES2018 and ES2019
4
32
 
5
33
 
6
34