回答編集履歴

2

校生

2019/03/26 05:09

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -32,11 +32,19 @@
32
32
 
33
33
 
34
34
 
35
- 同じFirefoxというブラウザ一つをとっても
35
+ ベンダー毎にJavaScriptの実装(エンジン)は異なりますし
36
36
 
37
- JavaScriptの実行速度を改善する為に何度もJavaScriptエンジンを作り直しています。
37
+ 同じFirefoxというブラウザ一つをとっても、実行速度を改善する為に何度もエンジンを作り直しています。
38
38
 
39
- Chromeなんかも同じV8エンジンですが中身はコロコロ変わっているはずです。
39
+ Chromeなんかも同じV8エンジンですが、細かいバージョンアップを繰り返しているので内部ロジックはコロコロ変わっているはずです。
40
+
41
+
42
+
43
+ つまり`ブラウザの数 * ブラウザのバージョン番号`の数だけエンジンの実装が存在します。
44
+
45
+ ただしオープンソースで提供されているV8エンジンを流用しているブラウザなんてのもありますので、
46
+
47
+ 全てが全て自前の独自仕様というわけではありません。
40
48
 
41
49
 
42
50
 
@@ -44,17 +52,29 @@
44
52
 
45
53
 
46
54
 
47
- JavaScriptエンジン部分はChromeが搭載しているV8エンジンが有名でが、
55
+ 歴史に知っておいた方が理解が捗ると思いますで解説していきま
48
56
 
49
- FirefoxやIE、Edgeなどなど…他のブラウザはV8エンジンではなく自作のエンジンでJavaScriptコードを動作させています。
50
57
 
58
+
59
+ そもそもJavaScriptのエンジンは、
60
+
61
+ Javaのように誰かが作ったものを全世界で使っているわけではありません。
62
+
63
+ ブラウザ作ってるベンダーは自前のエンジンを用意して、
64
+
65
+ 他のブラウザに対するアピールポイントとして利用しています。
66
+
67
+
68
+
69
+ 質問文で気にされているポイントにフォーカスするならば、
70
+
51
- つまり、全てのブラウザはのJavaScriptエンジンを積んるので**同じ動作をする保証**はありません。
71
+ 全てのブラウザは自前で用意したエンジンで実行するので**同じ動作をする保証**はありません。
52
72
 
53
73
 
54
74
 
55
75
  同じ動作しないってマジかよ…
56
76
 
57
- れは大昔のIEとネットスケープ(Firefoxの前身)の二大ブラウザがシェアを争っていた1990年代にさかのぼります。
77
+ こで大昔のIEとネットスケープ(Firefoxの前身)の二大ブラウザがシェアを争っていた1990年代にさかのぼります。
58
78
 
59
79
  当時はJavaScriptの統一仕様というものはなかったので、
60
80
 
@@ -68,23 +88,23 @@
68
88
 
69
89
  でも、ちょっと待てよ。
70
90
 
71
- AのブラウザでしかJavaScriptのコードが動作しないって、Webサイトの閲覧者相当困らないか???
91
+ AのブラウザでしかJavaScriptのコードが動作しないって、Webサイトの閲覧者相当困らないか?
72
92
 
73
93
  …となるわけですね。
74
94
 
75
95
 
76
96
 
77
- 1990年代のWebサイトはこのブラウザの独自仕様
97
+ 結果としてWebサイトは動作しない独自仕様だらけになってしまいました。
78
98
 
79
- HTMLタグもJavaScriptの挙動統一されおらず、
99
+ で当時は「閲覧者が困るので共通部分しか使わない!JavaScriptの実行とかのほか」
80
100
 
81
- Webサイトの担当者達は動作する事がそもそも保証出来ないので途方にくれていました。
101
+ …という防御的な姿勢が一般的であり、殆どのWebサイトを公開する企業はJavaScriptを利用していませんでした。
82
102
 
83
103
 
84
104
 
85
105
  そこで、ECMAという団体がECMAScriptという統一規格の仕様を作成し、
86
106
 
87
- ブラウザ作ってる団体に「俺の作った仕様で動作するように従いなさい」と勧告ます。
107
+ ブラウザ作ってる団体に「俺の作った仕様で動作するように従いなさい」と勧告するに至ります。
88
108
 
89
109
 
90
110
 
@@ -95,6 +115,22 @@
95
115
  ECMAScriptの仕様通りに動作しないJavaScriptのエンジンは、
96
116
 
97
117
  勧告に従って作られてない欠陥品として世のエンジニアやユーザーから見放されることになります。
118
+
119
+
120
+
121
+ この流れに世界中のブラウザのベンダーが合意し、全世界共通になっていきました。
122
+
123
+ 1990年代後半に作られたECMAScriptは少しずつ浸透し、
124
+
125
+ 今日では有名所のブラウザのほぼ全てのJavaScriptエンジンはECMAScriptに準拠しています。
126
+
127
+
128
+
129
+ 新しいバージョンのES6以降に関しては仕様が新しすぎるので、
130
+
131
+ IE11等の古いブラウザでは準拠しきれてないものもありますが、
132
+
133
+ ES5までならJavaScriptが動作すると謳っているブラウザはほぼ完璧に対応しています。
98
134
 
99
135
 
100
136
 
@@ -109,11 +145,3 @@
109
145
 
110
146
 
111
147
  こういう違いがあります。
112
-
113
-
114
-
115
- 今日では有名所のブラウザはほぼ全てECMAScriptに準拠しています。
116
-
117
- 新しいバージョンのES6以降…に関しては仕様が新しすぎるので、古いブラウザでは準拠しきれてないものもありますが、
118
-
119
- ES5までならJavaScriptが動作すると謳っているブラウザはほぼ完璧に対応しています。

1

ちょっと段落を編集

2019/03/26 05:09

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -2,75 +2,25 @@
2
2
 
3
3
 
4
4
 
5
- これは少し事がややこしいのでちと説明を挟でおきます
5
+ これだけのは、ども言えません。
6
6
 
7
7
 
8
8
 
9
- まずJavaScriptのエジン部分はChromeが搭載しているV8エンジンが有名すが、
9
+ 例えばドットイストールではChromeのデベロッパーツールで動かしてみましょう…みたに限定していませんしか?
10
10
 
11
- FirefoxやIE、Edgeなどなど…他のブラウザはV8エンジンではなく自作のエンジンでJavaScriptコードを動作させています。
12
-
13
- つまりのブラウザは独自のJavaScriptエンジン積んでいる**同じ動作をる保証**はありません
11
+ もしそうならばChromeに搭載されいるJavaScriptの事指しているはずです。
14
12
 
15
13
 
16
14
 
17
- 同じ動作しないってマジかよ…
15
+ ChromeのJavaScriptはECMAScriptとう仕様を厳密に守っている挙動をするので、
18
16
 
19
- これは大昔IEとネットスケプ(Firefox前身)の二大ブラウザがシェアを争っていた1990年代にさかのぼります。
17
+ ほぼそドを他のブラウザに持っていっても大丈夫です。
20
18
 
21
- その時は統一仕様なく、「俺のブラウザのJavaScriptにはこんな機能や関数があるんだぜ」「なんの!こっちのJavaScriptにはあんな機能が搭載されているんだ!」独自仕様を盛込みくっていました
19
+ という訳で仕様に限りなく近い挙動を学習出来ていると考えて差し支えありません
22
20
 
23
21
 
24
22
 
25
- シェアを争う為に切磋琢磨する事は良い事ですが、ちょっと待てよ。
26
-
27
- AのブラウザでしかJavaScriptが動作しないって、Webサイトの閲覧者相当困らないか???
28
-
29
- その通り、1990年代のWebサイトはこのブラウザの独自仕様で
30
-
31
- HTMLのタグもJavaScriptの挙動も統一されておらず、開発者は動作する事を保証出来ないので途方にくれていました。
32
-
33
-
34
-
35
- そこで、ECMAという団体がECMAScriptという統一規格の仕様を作成し、
36
-
37
- ブラウザに「俺の作った仕様で動作するように従いなさい」と勧告します。
38
-
39
-
40
-
41
- 例えば`false == null`を比較した結果は`false`になりますよみたいなことから、
42
-
43
- Arrayという配列型はこういうメソッドを所持して、こんな挙動をして下さいねみたいなことまで事細かに記載されています。
44
-
45
- ECMAScriptの仕様通りに動作しないJavaScriptのエンジンは、
46
-
47
- 勧告に従って作られてない欠陥品として世のエンジニアやユーザーから見放されることになります。
48
-
49
-
50
-
51
- 有名なChrome、Firefox等のブラウザは早々にこのECMAScriptに準拠したJavaScriptエンジンを作成しました。
52
-
53
- マイクロソフト社のIEは一度世に出してしまうとバージョンアップさせられない、
54
-
55
- 下位互換を重視する都合で中々追従出来ませんでしたが、IE9や10あたりでようやくECMAScriptに準拠したJavaScriptエンジンを用意することが出来ました。
56
-
57
-
58
-
59
- この辺の歴史を考慮に入れて考えると、
60
-
61
-
62
-
63
- - ECMAScript: ECMAが作った仕様
64
-
65
- - JavaScript: ブラウザ作ってる団体が実装したエンジン
66
-
67
-
68
-
69
- こういう違いがあります。
23
+ 詳しくは3でとめて解説します。
70
-
71
- もしかすると追従しきれてない仕様が存在するかも知れませんが、
72
-
73
- 世の殆どのJavaScriptはECMAScriptに書いてある仕様通りに動作するようになっているはずです。
74
24
 
75
25
 
76
26
 
@@ -94,4 +44,76 @@
94
44
 
95
45
 
96
46
 
47
+ JavaScriptのエンジン部分はChromeが搭載しているV8エンジンが有名ですが、
48
+
49
+ FirefoxやIE、Edgeなどなど…他のブラウザはV8エンジンではなく自作のエンジンでJavaScriptコードを動作させています。
50
+
51
+ つまり、全てのブラウザは独自のJavaScriptエンジンを積んでいるので**同じ動作をする保証**はありません。
52
+
53
+
54
+
55
+ 同じ動作しないってマジかよ…
56
+
57
+ これは大昔のIEとネットスケープ(Firefoxの前身)の二大ブラウザがシェアを争っていた1990年代にさかのぼります。
58
+
59
+ 当時はJavaScriptの統一仕様というものはなかったので、
60
+
61
+ 「俺のブラウザのJavaScriptにはこんな機能や関数があるんだぜ」
62
+
63
+ 「なんの!こっちのJavaScriptにはあんな機能が搭載されているんだ!」
64
+
65
+ ……と独自仕様を盛り込みまくる事で自社のブラウザの優位性を語っていました。
66
+
67
+
68
+
69
+ でも、ちょっと待てよ。
70
+
71
+ AのブラウザでしかJavaScriptのコードが動作しないって、Webサイトの閲覧者相当困らないか???
72
+
73
+ …となるわけですね。
74
+
75
+
76
+
77
+ 1990年代のWebサイトはこのブラウザの独自仕様で
78
+
79
+ HTMLのタグもJavaScriptの挙動も統一されておらず、
80
+
81
+ Webサイトの担当者達は動作する事がそもそも保証出来ないので途方にくれていました。
82
+
83
+
84
+
85
+ そこで、ECMAという団体がECMAScriptという統一規格の仕様を作成し、
86
+
87
+ ブラウザ作ってる団体に「俺の作った仕様で動作するように従いなさい」と勧告します。
88
+
89
+
90
+
91
+ 例えば`false == null`を比較した結果は`false`になりますよという事が明記されてますし、
92
+
93
+ Arrayという配列型はこういうメソッドを所持して、こんな挙動をして下さいねみたいなことまで事細かに記載されています。
94
+
95
+ ECMAScriptの仕様通りに動作しないJavaScriptのエンジンは、
96
+
97
+ 勧告に従って作られてない欠陥品として世のエンジニアやユーザーから見放されることになります。
98
+
99
+
100
+
101
+ この辺の歴史を考慮に入れて考えると、
102
+
103
+
104
+
105
+ - ECMAScript: ECMAが作った仕様
106
+
107
+ - JavaScript: ブラウザ作ってる団体が実装したエンジン
108
+
109
+
110
+
97
- 1の回答に全部書てしまいました
111
+ こうう違があり
112
+
113
+
114
+
115
+ 今日では有名所のブラウザはほぼ全てECMAScriptに準拠しています。
116
+
117
+ 新しいバージョンのES6以降…に関しては仕様が新しすぎるので、古いブラウザでは準拠しきれてないものもありますが、
118
+
119
+ ES5までならJavaScriptが動作すると謳っているブラウザはほぼ完璧に対応しています。