回答編集履歴
5
@@toStringTag
answer
CHANGED
@@ -50,4 +50,11 @@
|
|
50
50
|
|
51
51
|
そんなわけで、ES5は現在の最新ブラウザでも通用する仕様です。
|
52
52
|
|
53
|
+
---
|
54
|
+
|
55
|
+
※仕様を読む段階になれば、内部動作が大きく変化している部分はありますが、**同じコードを書けば、同じ結果が返ってくる**という意味での後方互換性は担保されています。
|
56
|
+
|
57
|
+
- `Object.prototype.toString` が `[[Class]]` ではなく、`@@toStringTag` を返すようになりました
|
58
|
+
- `new Array` の要素列挙に `Array.prototype[@@iterator]` が使用されるようになりました
|
59
|
+
|
53
60
|
Re: takenoko_sand さん
|
4
markdown
answer
CHANGED
@@ -44,7 +44,7 @@
|
|
44
44
|
}
|
45
45
|
```
|
46
46
|
|
47
|
-
私の知る範囲では、後方互換性がなくなった更新は、独自拡張から逆輸入して標準化された
|
47
|
+
私の知る範囲では、後方互換性がなくなった更新は、独自拡張から逆輸入して標準化された 「`Object.prototype.__proto__` の削除」ぐらいですね。
|
48
48
|
|
49
49
|
- [Object.prototype.__proto__ - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/proto)
|
50
50
|
|
3
後方互換性
answer
CHANGED
@@ -24,4 +24,30 @@
|
|
24
24
|
最新仕様を**体系的に学びたい**のであれば、書籍は良いと思います。
|
25
25
|
私は所持していないのでレビューはできませんが、"Dr. Axel Rauschmayer" でぐぐれば、著者の事が分かると思います。
|
26
26
|
|
27
|
+
### 後方互換性
|
28
|
+
|
29
|
+
Pythonはサーバサイドで動く言語なので、Python2からPython3にバージョンアップする際、プログラマの意志でサーバの環境を変更して対応することができます。
|
30
|
+
よって、サーバサイド言語は後方互換性のないバージョンアップをすることが可能です。
|
31
|
+
|
32
|
+
一方、JavaScriptはクライアントサイドで動く言語(Node.js等のサーバ環境を除く)です。
|
33
|
+
仮にECMAScriptで「後方互換性がないバージョンアップ」がされた場合、最新バージョンに対応していない古いブラウザを使用しているユーザを切り捨てる事になります。
|
34
|
+
「HTML4→XHTML2」の移行に失敗した(IE6のシェアが下がらなかった)経緯から、クライアントサイドの言語(HTML,CSS,ECMAScript...etc)は、出来るだけ後方互換性を保つバージョンアップをする傾向にあります。
|
35
|
+
だからこそ、`typeof null` の仕様バグはいつまでも残り続けますし、`document.all` は**故意にEMCAScript仕様に違反する仕様**(HTML Standard)が策定されているのです。
|
36
|
+
|
37
|
+
```JavaScript
|
38
|
+
console.log(typeof null); // "object" (本来は "null" を返すべき)
|
39
|
+
|
40
|
+
console.log(Boolean(document.all)); // 存在している
|
41
|
+
|
42
|
+
if (!document.all) { // この挙動は故意にECMAScript仕様に違反している (HTML Standard)
|
43
|
+
console.log('document.all is falsy')
|
44
|
+
}
|
45
|
+
```
|
46
|
+
|
47
|
+
私の知る範囲では、後方互換性がなくなった更新は、独自拡張から逆輸入して標準化された **Object.prototype.__proto__ の削除**ぐらいですね。
|
48
|
+
|
49
|
+
- [Object.prototype.__proto__ - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/proto)
|
50
|
+
|
51
|
+
そんなわけで、ES5は現在の最新ブラウザでも通用する仕様です。
|
52
|
+
|
27
53
|
Re: takenoko_sand さん
|
2
知見を広げる目的
answer
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
必要性を図る目安は、**作れるか、作れないか**
|
6
6
|
|
7
7
|
作ろうとしているものがES5の範疇で作れるなら、最新仕様を学習しなくても良い(MAY NOT)、といえるでしょう。
|
8
|
-
|
8
|
+
ただし、必要性に関係なく、自身の知見を広げる目的なら、最新仕様を学ぶべき(SHOULD)です。
|
9
9
|
|
10
10
|
- [RFC 2119 - Key words for use in RFCs to Indicate Requirement Levels (日本語訳)](http://www.cam.hi-ho.ne.jp/mendoxi/rfc/rfc2119j.html)
|
11
11
|
|
1
必要性
answer
CHANGED
@@ -1,6 +1,20 @@
|
|
1
|
-
勿論、最新仕様を覚えるに越したことはありません。
|
2
|
-
|
1
|
+
### 必要性
|
3
2
|
|
3
|
+
端的にいえば、「必要なら学び、不要なら学ばない」
|
4
|
+
これだけです。
|
5
|
+
必要性を図る目安は、**作れるか、作れないか**
|
6
|
+
|
7
|
+
作ろうとしているものがES5の範疇で作れるなら、最新仕様を学習しなくても良い(MAY NOT)、といえるでしょう。
|
8
|
+
どちらも選択可能なら、当然、最新仕様を学ぶべき(SHOULD)です。
|
9
|
+
|
10
|
+
- [RFC 2119 - Key words for use in RFCs to Indicate Requirement Levels (日本語訳)](http://www.cam.hi-ho.ne.jp/mendoxi/rfc/rfc2119j.html)
|
11
|
+
|
12
|
+
しかし、それを判断できるのは、実際に作ろうとしている takenoko_sand さんです。
|
13
|
+
自分自身が持ちうる知識(ES5)で作ることを試みて、その結果で判断してください。
|
14
|
+
それが世の多くのプログラマが意識せずともやっている「必要になったら学ぶ」という姿勢です。
|
15
|
+
|
16
|
+
### Exploring ES2018 and ES2019
|
17
|
+
|
4
18
|
ところで、ES最新仕様の書籍とは**『Exploring ES2018 and ES2019』**の事ですか?
|
5
19
|
|
6
20
|
- [JavaScriptのレベル別書籍のまとめ](https://gist.github.com/azu/027859e08e284cb8dfe7)
|